Verringert das Update-Statistiksystem tatsächlich die Leistung?

Verringert das Update-Statistiksystem tatsächlich die Leistung?

Ich verwende jede Nacht sp_updatestats auf einer Produktionsdatenbank, was einwandfrei zu funktionieren scheint, mit Ausnahme einer bestimmten gespeicherten Prozedur, bei der nach der Aktualisierung Leistungsprobleme auftreten.

Das Entwicklerteam arbeitet derzeit an der Behebung des Problems (einige neue Indizes und eine von mir empfohlene Umstrukturierung der Abfrage). Derzeit besteht die einzige Problemumgehung jedoch darin,

UPDATE STATISTICS [SuperGiantTable]
WITH FULLSCAN

Die Frage ist also, kann ich sp_ updatestats zwingen, die Option „mit Fullscan“ auszuführen? Muss ichwollenzu? Wenn nicht, werde ich wahrscheinlich einfach den obigen UPDATE STATISTICS-Befehl hinzufügen, der unmittelbar nach sp_updatestats ausgeführt wird.

SQL 2000, übrigens.

Antwort1

Wie KPWINC sagte: „Es kommt wirklich darauf an.“

Die Antwort auf Ihre Frage wird von zahlreichen weiteren Faktoren beeinflusst, so dass eine allgemeine Antwort möglicherweise nicht angemessen ist.

Microsoft MSDN hat Einträge für sp_updatestats (http://msdn.microsoft.com/en-us/library/aa260337(SQL.80).aspx) und „STATISTIKEN AKTUALISIEREN“ (http://msdn.microsoft.com/en-us/library/aa260645(SQL.80).aspx)

Um zuerst Ihre letzten Fragen zu beantworten:

Sie müssen den SQLServerPedia-Eintrag noch einmal lesen. Genauer gesagt:

Beim Neuaufbau Ihres Index werden die Statistiken für den Index automatisch aktualisiert (mit einer Stichprobengröße von 100 %, was normalerweise besser ist als das Ergebnis bei der Verwendung von sp_updatestats).Nachdem der Indexneuaufbau abgeschlossen ist, können Sie mit sp_updatestats die anderen Statistiken aktualisieren, die Aufmerksamkeit erfordern (2005+).

Ein Blick in die Dokumentation UPDATE STATISTICS (2000) sagt Folgendes zum Sampling:

Hinweis: Das Standardverhalten besteht darin, einen Beispielscan der Zieltabelle oder der indizierten Ansicht durchzuführen.SQL Server berechnet automatisch die erforderliche Stichprobengröße.

Kimberly Tripp hat einige Blogeinträge zu Statistiken, Indizes und Datenbankwartungsplänen zusammengestellt (http://www.sqlskills.com/BLOGS/KIMBERLY/category/Statistics.aspx). Auch wenn die Informationen für Sie möglicherweise nicht direkt nutzbar sind, sollten die Anleitungen in den einzelnen Blogeinträgen hilfreich sein und die referenzierten Websites werden wahrscheinlich hilfreich sein.

Antwort2

Es kommt wirklich darauf an ...

Wie viele Datenbanken?

Wie groß ist/sind die Datenbank(en)?

Wie viel Aktivität?

sp_updatestats (standardmäßig) aktualisiert Statistiken mit einer Standardabtastrate. Sie können versuchen, die Option „Resample“ zu verwenden, aber das funktioniert nur, wenn seit der letzten Aktualisierung der Statistiken keine automatische Aktualisierung stattgefunden hat (die automatische Aktualisierung verwendet ebenfalls eine Standardabtastrate).

Wenn Sie einen Index neu erstellen, werden die Statistiken mit einem vollständigen Scan aktualisiert und die meisten Benutzer sehen nach einer Indexneuerstellung eine gute Leistung.

Nur in seltenen Fällen wird die automatische Statistikfunktion deaktiviert. Ich würde empfehlen, sie eingeschaltet zu lassen.

Lassen Sie einen Job in angemessenen Intervallen (die von Ihren Datenänderungsmustern für jede Tabelle abhängen) ausführen und eine manuelle Statistikaktualisierung mithilfe eines vollständigen Scans oder einer anderen hohen Abtastrate durchführen.

Generell würde ich wie folgt vorgehen:

Bei großen Datenbanken: Stündliche Sicherung des Transaktionsprotokolls.

– Tägliches differenzielles Backup. – Tägliche Defragmentierung. – Tägliches Update der Statistiken.

– Einmal wöchentlich neu indizieren. – Einmal wöchentlich vollständiges Backup.

Vieles hängt von der Datenbank und den Transaktionen ab.

Antwort3

Ein weiterer zu berücksichtigender Punkt ist, dass die automatisch berechnete Abtastrate dazu führen kann, dass das generierte Histogramm und der Dichtevektor eine eventuell vorhandene Datenschiefe, gegen die der Sproc zufällig arbeitet, nicht richtig berücksichtigen.

Kennen Sie den Unterschied in den Abfrageplänen zwischen dem Sproc nach einer stichprobenartigen Statistikaktualisierung und einer Fullscan-Statistikaktualisierung?

Und noch etwas: Seien Sie vorsichtig bei Wartungsplänen, die Indizes neu erstellen und dann dieselben Statistiken aktualisieren, die als Nebeneffekt der Neuerstellung aktualisiert wurden. Das kann dazu führen, dassSCHLECHTERStatistiken, als wenn Sie die Rebuild-Updated-Statistiken einfach so gelassen hätten.

Danke

verwandte Informationen