Gründe für die Deaktivierung der automatischen Aktualisierung von Statistiken?

13

Ich habe gerade erfahren, dass ein Kundenunternehmen, für das ich arbeite, beschlossen hat, die Optionen für die automatische Aktualisierung von Statistiken für einige seiner SQL Server und die Datenbankadministratoren für die manuelle Behebung von Leistungsproblemen zu deaktivieren, wenn diese auftreten.

Diese Art von macht für mich jedoch keinen Sinn. Warum möchten Sie verhindern, dass die Statistiken aktualisiert werden?

Alpha
quelle

Antworten:

11

Mein Rat:

  • Lassen Sie die Option "Statistiken automatisch aktualisieren" aktiviert (bis Sie einen guten Grund haben, dies nicht zu tun) - Sie möchten nicht, dass ein großer Löschvorgang in der Mitte eines Tages die Abfragepläne bis zur nächsten Ausführung der Wartung aufhebt.
  • Allerdings Zeitplan Index Wartung / Aktualisierung der Statistiken in einer ruhigen Zeit. sp_updatestatswird alle Statistiken für alle Tabellen in einer Datenbank für Sie aktualisieren, dies wird jedoch auch zu einer erneuten Kompilierung gespeicherter Prozesse führen. Wählen Sie daher Ihre Zeit sorgfältig aus (dh, sp_updatestatsbevor Ihre Berichterstattung zum Monatsende möglicherweise nicht optimal ist).

Wie oft müssen Sie Index Wartung ausführen / rebuild Statistiken hängt von Ihrer Datenbanklast, speziell wie oft Ihre Daten geändert wird (dh INSERT/ UPDATE/ DELETE). Wenn Sie Daten in der gesamten Show ändern (dh eine Staging-Tabelle für einen wöchentlichen Batch-Prozess), möchten Sie wahrscheinlich die Statistiken aktualisieren / die Indizes nachts neu organisieren. Wenn Ihre Daten eher statisch sind, können Sie wahrscheinlich einen wöchentlichen oder vierzehntägigen Zeitplan festlegen.

Simon Righarts
quelle
7

Ich habe es nur einmal mit einer schlechten App gesehen, die schlecht indizierte Haufen und schwere ETL hatte.
Das war Quatsch und zum Glück nicht meins.

Ansonsten gibt es keinen Grund.

Wenn Sie zu unangemessenen Zeiten Statistikaktualisierungen erhalten, bedeutet dies, dass Sie eine inkorrekte Index- / Statistikwartung durchführen oder massive Lösch- / Ladevorgänge haben, die den Schwellenwert überschreiten.

Mit SQL Server 2005+ können Sie die Aktualisierung der Statistiken trotzdem verschieben.
Siehe "Wann werden synchrone oder asynchrone Statistikaktualisierungen verwendet?"

Es wäre interessant zu sehen, welchem ​​Artikel sie gefolgt sind oder über welchen sie gelesen haben, um diese Wahl zu treffen ...

gbn
quelle
Ist es vielleicht ein Vermächtnisproblem? War die Wartung der Statistiken in 2k anders?
JNK
@JNK: IIRC einige Änderungen an der Zeilenänderungsschwelle, aber ich müsste nachschlagen ... ah ja, jetzt nach Spalten und nicht nach Tabellen verfolgt msdn.microsoft.com/en-us/library/ms190283.aspx
gbn
Ist es 20% im Jahr 2008?
JNK
20% + 500 für> 500 pro Spalte seit SQL Server 2005+
2.
7

Das einzige Mal, dass ich Auto-Statistiken deaktiviert habe, war, als ich einige undokumentierte Befehle verwendet habe, um einige gefälschte Statistiken zu erstellen, die das System beim Laden von Daten nicht löschen sollte. Dies war ein sehr Randfall.

mrdenny
quelle
5

In früheren Zeiten (SQL Server 2000) konnte das Aktivieren der automatischen Aktualisierungsstatistik zu großen "Pausen" in OLTP-Anwendungen führen, als SQL sich entschied, eine Statistikaktualisierung durchzuführen.

Ab SQL Server 2005 gibt es eine asynchrone Option, die nicht zu einer "Pause" führt, wenn die Statistiken nicht mehr aktuell sind und anschließend neu kompiliert werden. Die Statistiken werden beim nächsten Mal, wenn sie benötigt werden, asynchron neu kompiliert.

Bedenken Sie jedoch, dass ein Gleichgewicht bestehen muss - für große Datenmengen möchten Sie möglicherweise, dass die aktuelle Abfrage die aktuellsten Statistiken berücksichtigt, da die Abfrage bei einem ineffizienten Abfrageplan möglicherweise exponentiell länger dauert.

Sie können auch die Anzahl der Neukompilierungen pro Sekunde und andere wichtige Leistungsmetriken mithilfe der von SQL Server veröffentlichten Leistungsindikatoren überwachen , da sich der Beweis im Pudding befindet.

ifx
quelle
4

Wie aktiv sind die Systeme?

Wenn es sich meistens um gelesene Systeme handelt, kann es sein, dass Sie ohne Aktualisierung auskommen, wenn Sie dies manuell tun, wenn Sie Daten ändern (Einfügen, Aktualisieren, Löschen).

Es wird jedoch empfohlen, die Best Practices beizubehalten, da es meines Erachtens selten zu Leistungsproblemen kommt. Ich würde ihnen wahrscheinlich Artikel und Blogbeiträge schicken, die darauf hindeuten, dass sie weiterhin veröffentlicht werden. Kimberly Tripp hat einige gute.


quelle
4

Obwohl ich MrDenny niemals in irgendeiner Weise widersprechen oder absichtlich diskreditieren werde (zu viel Respekt für sein Wissen und seine Beiträge zur Community), ist mir in der MS-Dokumentation aufgefallen, dass empfohlen wird, die Statistik für automatische Updates zu deaktivieren.

Bei der Kapazitätsplanung und -konfiguration für Speicher und SQL Server (SharePoint Server 2010) empfiehlt MS, diese Option zu deaktivieren .

Ich habe auch die gleiche Empfehlung von MS für frühere Versionen von SP gelesen, kann die Links aber gerade nicht finden.

Aber ich bin KEIN SP-Experte-DBA. Vielleicht möchten Sie auch überprüfen, was Chun Liu, MS Permier Field Engineer, dazu bei Chun Liu auf SharePoint zu sagen hat, oder diesen Beitrag einfach ignorieren und aktiviert lassen.

Bruce
quelle
5
Ihr Rat ist spezifisch für SharePoint-Datenbanken. Er gilt nicht generell für alle SQL Server-Installationen.
Simon Righarts
0

Normalerweise schalten Sie sie nur aus, wenn Sie eine Methode haben, um sie selbst zu aktualisieren. Ich mache das die ganze Zeit, da wir eine bessere oder einfach andere Abtastung benötigen als die automatischen Statistiken. Das ist ziemlich verbreitet, aber Sie würden es nicht einfach ausschalten und nichts anderes tun.

Andrew J. Kelly
quelle