Dauer und Unterbrechungen der Statistik automatisch aktualisieren

7

Unser Produktions-SQL Server 2008 R2 beginnt manchmal langsam zu arbeiten: Alle Abfragen beginnen zu langsam zu arbeiten (und manchmal hängen alle Abfragen einfach und warten etwas und fahren dann fort). Dies dauert normalerweise mehrere Minuten.

Ich habe gelesen, dass Statistiken mit automatischen Updates manchmal den Server verlangsamen können:

Gibt es einen Grund, Statistiken manuell zu aktualisieren?

Ich sehe, dass manchmal automatische Aktualisierungsstatistiken für ziemlich große Indizes auftreten (1,7 GB Größe, Tabelle mit 5,5 Millionen Zeilen). Ich kann das Datum der letzten Aktualisierung für Statistiken über STATS_DATE sehen, aber ich kann die Dauer dieses Prozesses nicht sehen.

Könnten Sie bitte vorschlagen, wie ich die Dauer der automatischen Aktualisierung der Statistik sehen kann? Oder wie kann ich feststellen, dass Statistiken zur automatischen Aktualisierung Probleme verursachen?

Vielen Dank.

PS Nachdem wir auf diese Leistungsprobleme gestoßen waren, begann ich, Wartestatistiken zu überwachen. Der höchste Wartetyp ist CXPACKET. Sie variiert zwischen 36% und 60% aller Wartezeiten. Und am Morgen, wenn der Arbeitstag beginnt, hat er den maximalen Wert während des Arbeitstages (Benutzer arbeiten normalerweise 12 Stunden am Tag mit der Anwendung). Der zweithöchste Wartetyp ist SOS_SCHEDULER_YIELD (15% -20%).
Ich habe einige Beiträge im Internet gefunden, in denen erwähnt wird, dass die Wartezeit von CXPACKET zeigt, dass automatische Aktualisierungsstatistiken Probleme verursachen. Aber ich habe keinen wirklichen Beweis für solche Aussagen gefunden. Mir ist klar, dass CXPACKET Probleme mit der parallelen Ausführung von SQL-Abfragen aufweisen kann (von http://www.dbadiaries.com/reducing-sql-server-cxpacket-wait-type ).

Sieger
quelle
Haben Sie die Wartestatistik auf der Serverinstanz aktiviert, um festzustellen, dass Statistiken zur automatischen Aktualisierung Probleme verursachen?
Kin Shah
Ich habe meinen Beitrag bearbeitet (ich habe PS-Bereich hinzugefügt)
Victor

Antworten:

7

Sie können diese Daten mit der Auto Stats-Ereignisklasse mit SQL-Trace abrufen. Eine der Datenspalten des Ereignisses ist Dauer . In der oben genannten BOL-Dokumentation finden Sie hier ein Zitat:

Dauer : Zeitdauer (in Mikrosekunden), die das Ereignis benötigt.

Das sollte Ihnen eine ziemlich gute Vorstellung davon geben, wann / wie lange Auto-Statistiken dauern. Wenn Sie viele leistungsstoppende Statistiken zur automatischen Aktualisierung (synchron) sehen, können Sie die asynchrone Statistik der automatischen Aktualisierung in Betracht ziehen. Wenn Sie diese Option aktivieren, wird das Abfrageoptimierungsprogramm angewiesen, nicht auf die Aktualisierung der Statistiken zu warten, um die Kompilierung der Abfrage fortzusetzen. Dies ist eine Lösung, um die direkte Beeinflussung von Statistikaktualisierungen zu verhindern, aber natürlich opfern Sie neue Statistiken für diese bestimmte Abfragekompilierung.

Weitere Informationen hierzu finden Sie in der MSDN-Referenz zur Statistik .

Thomas Stringer
quelle