none
SQL2008: Erste Abfrage langsam? (Sleep/WarmUp/Wait/Idle?) RRS feed

  • Frage

  • Hallo,

    Habe eine Frage zum "Aufwachen" des SQL Servers.

    Der erste Aufruf einer Abfrage ist langsam. Danach alles schnell.
    Wartet man eine Minute ohne Aktivität, dauert die Abfrage wieder länger.
    Kann man dieses Interval verlängern?

    AutoClose ist off.

    Gibt es in MSSQL2008 weitere Einstellungen die, den Server veranlassen "einzuschlafen" und wie kann man sie ändern ?

    Vielen Dank!

    Max

    Donnerstag, 22. März 2012 10:25

Antworten

  • Hallo,

    ist das verhalten im Management Studio ebenfalls zu beobachten?

    Grüße

    Oliver

    • Als Antwort markiert Max Mia Donnerstag, 22. März 2012 14:01
    Donnerstag, 22. März 2012 12:09

Alle Antworten

  • Hi,

    das liegt daran, dass der SQL Server die Abfragepläne und Abfragen selbst im Arbeitspeicher ablegt. Sobald dieser aber "zu voll" ist, wird die älteste Abfrage und auch der Abfrageplan aus dem Speicher entfernt. Das bedeutet, dass der SQL Server beim erneuten Aufruf der Abfrage den Plan neu erstellen muss.

    Man kann jetzt entwerder prüfen ob der SQL Server bereits den gesamten zur Verfügung stehenden Arbeitsspeicher nutzt. Ist dies nicht der Fall, kann in der SQL Server Konfiguration geprüft werden ob dort ein Limit eingegeben wurde. Anonsten sollte der Speicher erweitert werden.

    Der SQL Server selbst "schläft" nicht ein, es sei denn die Einstellung AutoClose ist auf On gesetzt. Aber dies ist ja wie du bereits geschrieben hast nicht der Fall.

    Grüße

    Oliver

    Donnerstag, 22. März 2012 10:50
  • Hallo,

    Oliver hat recht, das wäre ein möglicher Ansatzpunkt. Zusätzlich gibt es noch die Option Auto Shrink, die zu einem solchen Verhalten führen könnte. Darüber hinaus würde ich auf jeden Fall noch die Indizes anschauen, da bei einer Abfrage auch zwischen logischen und physischen Reads unterschieden wird und somit auch das Ergebnis gecached werden kann.

    Grüsse

    Michel

    Donnerstag, 22. März 2012 11:21
  • Danke für eure Antworten.

    AutoShrink ist auch Off.
    Es stehen 4GB Arbeitsspeicher zur Verfügung, am alten Server (2GB, SQL2000) läuft die Abfrage ohne Verzögerung.
    Worauf muss ich bei den Indexen aufpassen um die Caches zu optimieren?

    Kann es an der Verbindung liegen? Ich verbinde in dem Fall per PHP, SQLSRV mit Username/Passwort und ConnectionPooling on.
    Die Abfrage ist sehr simpel, Select mit einer Tabelle. 

    Nach einer Minute ohne Aktivität (keine Abfrage dazwischen) ist ein und die gleiche Abfrage, die zuvor schnell war, langsam.
    Erste abfrage - langsam
    Gleiche Abfrage - schnell
    1 Minute inaktiv
    Gleiche Abfrage - langsam

    Donnerstag, 22. März 2012 11:58
  • Hallo,

    ist das verhalten im Management Studio ebenfalls zu beobachten?

    Grüße

    Oliver

    • Als Antwort markiert Max Mia Donnerstag, 22. März 2012 14:01
    Donnerstag, 22. März 2012 12:09
  • Sorry, es liegt tatsächlich an PHP/SQLSRV.
    Im Management Studio klappts.

    Gibts eine PHP.INI direktive für SQLSRV Timeout? Ähnlich wie für mySQL ?

    Donnerstag, 22. März 2012 12:52