Ich habe einen Wartungsplan geerbt, der folgende Aufgaben erfüllt:
- Alte Daten bereinigen
- Überprüft die DB-Integrität
- Führt Datenbank- und Transaktionsprotokollsicherungen durch
- Reorganisiert unsere Indizes
- Aktualisiert die Statistiken
- Löschen Sie alte Sicherungen und Wartungsplandateien
Von dem 23-minütigen Wartungsplan dauert die Aktualisierung der Statistiken erstaunliche 13 Minuten. Während dieses Zeitraums von 13 Minuten ist der Zugriff auf die Datenbank gesperrt (oder die Replikation dieser Datenbank auf unsere anderen Datenbanken ist unterbrochen).
Meine Frage ist:
Wann sollten wir die Statistiken aktualisieren und warum?
Dies scheint die Art von Dingen zu sein, die wir seltener als jeden Tag tun sollten. Ich versuche, uns aus der "nur weil" -Mentalität herauszuholen, unnötige Wartungsarbeiten durchzuführen.
sql-server
performance
maintenance
statistics
Zwiebel-Ritter
quelle
quelle
Antworten:
Wenn Sie das Wartungsfenster dafür nicht haben, ist die tägliche Aktualisierung der Statistiken wahrscheinlich ein wenig übertrieben. Vor allem, wenn Sie die automatische Statistikaktualisierung für die Datenbank aktiviert haben. In Ihrem ursprünglichen Beitrag haben Sie angegeben, dass Benutzer aufgrund dieses Wartungsplans eine Leistungsverschlechterung feststellen. Gibt es keine andere Zeit, um diesen Wartungsplan auszuführen? Kein anderes Fenster? Ich sehe, dass Ihr Plan eine Indexreorganisation umfasst. Wann erstellen Sie Indizes neu? Wenn dieser Vorgang ausgeführt wird, werden die Statistiken automatisch aktualisiert (sofern dies nicht für den Index deaktiviert ist).
Wie oft Sie Statistiken aktualisieren sollten, hängt stark davon ab, wie viele Datenänderungen Ihre Indizes und Daten erhalten . Wenn es sehr wenig Änderung ist (
INSERT
,UPDATE
,DELETE
) auf die Daten, dann könnten Sie einen seltenen Zeitplan für den Auftrag Update Statistiken haben.Eine Möglichkeit, um herauszufinden, ob Ihre Statistiken veraltet sind, besteht darin, die Ausführungspläne zu überprüfen und festzustellen, ob die geschätzten Zeilen erheblich von den tatsächlich zurückgegebenen Zeilen abweichen. Dies ist ein guter Hinweis darauf, dass das Intervall erhöht werden muss. In deinem Fall gehst du in die andere Richtung und ein bisschen Probezeit könnte für dich angebracht sein. Aktualisieren Sie die Statistiken wöchentlich, und wenn Sie allmählich veraltete Statistiken erkennen, gehen Sie von dort aus.
Wenn Sie Auto Update Statistics für Ihre Datenbank verwenden, finden Sie in dieser Referenz den Schwellenwert für die Aktualisierung von Statistiken.
quelle
Wann werden Statistiken aktualisiert?
genau dann, wenn die Funktion zur automatischen Aktualisierung der Statistik nicht Ihren Anforderungen entspricht. Ich meine, wenn die automatische Erstellung und Aktualisierung von Statistiken aktiviert ist und Sie einen fehlerhaften Abfrageplan erhalten, weil die Statistiken nicht genau oder aktuell sind, ist es möglicherweise eine gute Idee, die Kontrolle über die Erstellung und Aktualisierung von Statistiken zu haben. Aber wenn Sie mit der Leistung Ihres SQL-Servers und den Ausführungszeiten für Abfragen einverstanden sind.
dann schlage ich vor, den Update-Statistikbefehl von Ihren Wartungsplänen zu stoppen
Das Aktualisieren von Statistiken ist wichtig und nützlich. 1. Ermöglicht es dem SQL Server-Abfrageoptimierer, konsistente Abfragepläne zu erstellen, während die Entwicklungs- und Verwaltungskosten niedrig bleiben und endgültige Abfrageergebnisse. 3. Dank guter Statistiken kann das Optimierungsprogramm die Kosten verschiedener Abfragepläne genau einschätzen und anschließend einen Plan mit hoher Qualität auswählen
Wenn Sie Statistiken manuell aktualisieren möchten, sollten Sie zuerst wissen, wann Statistiken automatisch aktualisiert werden
Wenn für das SQL Server-Abfrageoptimierungsprogramm Statistiken für eine bestimmte Spalte in einer Tabelle erforderlich sind, für die seit der letzten Erstellung oder Aktualisierung der Statistiken erhebliche Aktualisierungsaktivitäten durchgeführt wurden, aktualisiert SQL Server die Statistiken automatisch, indem die Spaltenwerte abgetastet werden (mithilfe der automatischen Aktualisierung der Statistiken). . Die automatische Aktualisierung der Statistiken wird durch die Abfrageoptimierung oder die Ausführung eines kompilierten Plans ausgelöst und betrifft nur eine Teilmenge der Spalten, auf die in der Abfrage verwiesen wird. Statistiken werden vor der Abfragekompilierung aktualisiert, wenn AUTO_UPDATE_STATISTCS_ASYNC auf OFF gesetzt ist
Hier sind schöne Artikel, die darüber sprechen, wann Update-Statistiken in SQL Server ausgelöst werden
Nachdem Sie wissen, wann die Statistik ausgelöst wird, können Sie entscheiden, wann die Statistik manuell aktualisiert werden soll
Um mehr über Statistik und ihre Auswirkungen auf die Leistung zu erfahren, empfehle ich BrentOzar und Kimberly in sqlskills sehr guten Blogs und Bloggern.
quelle