Wann werden Statistiken aktualisiert?


42

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.


2
Wie oft / wie werden Zeilen eingefügt / aktualisiert / gelöscht? Für mich ist das der entscheidende Faktor.
JNK

@JNK Wir fügen ~ 70.000 Zeilen pro Tag in die gesamte Datenbank ein. Aktualisieren Sie ~ 100 Zeilen pro Monat.
Zwiebelritter

1 - Dies ist relevanter, wenn wir anhand von TABELLE wissen, wie viele Zeilen und 2 - als Prozentsatz. 70.000 Zeilen pro Tag in einer Tabelle von 1 m sind viel anders als in einer Tabelle von 500 m
JNK

Ich würde empfehlen, etwas wie ola.hallengren.com/… zu verwenden. Diese Lösung erstellt / reorganisiert und aktualisiert nur das, was benötigt wird. Auf diese Weise können Sie die Zeit verkürzen, die Ihr Wartungsplan benötigt, und außerdem viel Speicherplatz sparen.
Peter,

Antworten:


28

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.


Wir erstellen die Indizes einmal pro Woche neu.
Zwiebelritter

5
@ Onion-Knight Dann aktualisieren Sie die Statistiken auch einmal pro Woche, wenn Sie Ihre Indizes neu erstellen. Dies kann ausreichend sein, wenn Sie einen umfassenden Index-Neuaufbau in der Datenbank durchführen.
Thomas Stringer

25

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

  1. from simple-talk Section 13. Wann wird die automatische Aktualisierung auf Statistiken ausgelöst?
  2. support.microsoft Abschnitt: Automatisieren der Autostatbestimmung
  3. Abschnitt msdn.microsoft : Verwalten von Statistiken in SQL Server 2008

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.