SQL Server 2008: Statistiken kurzgefasst

07 Oktober 2013
Jelena Barth

Statistiken beeinflussen stark die Dauer der DB-Abfragen. Ein optimaler Ausführungsplan für jede DB-Abfrage garantiert optimale Performance für eine DB. Ein von SQL Server bestmöglich erstellter Ausführungsplan benötigt optimale Indizes und aktuellste Statistiken.

In diesem Blog-Eintrag habe ich die wichtigen Fakten über die Statistiken zusammengefasst:

  1. Statistiken können automatisch vom SQL Server oder manuell mithilfe des CREATE STATISTICS Statements erstellt werden. Es ist sehr empfehlenswert, Statistiken automatisch erstellen und aktualisieren zu lassen! Tabelle -> Optionen -> Automatische Statistikerstellung = true, Automatische Statistikaktualisierung = true.
  2. Bei einer „read-only“ DB werden fehlende Statistiken NICHT eingefügt, auch wenn AUTO CREATE STATISTICS = „true“ ist. Lösung: Statistiken manuell erstellen.
  3. Zu jedem eingefügten Index wird automatisch eine Statistik mit dem gleichen Namen erstellt (z.B. PK_ -Statistiken zu den PK_ -Indizes) erzeugt.
  4. WA_Sys – Statistiken werden bei einer Abfrage automatisch für alle Spalten erstellt, die in einer „WHERE“-Klausel verwendet werden. Sie haben keinen Bezug zu den Indizes. Ohne _WA-Sys -Statistiken und mit der Option Automatische Statistikerstellung =“false“ wird eine DB unbrauchbar.
  5. Bei den _dta_stat -Statistiken handelt es sich um von dem Datenbankenoptimierungsratgeber (DTA) vorgeschlagenen und übernommenen Statistiken.
  6. Statistiken werden automatisch aktualisiert, wenn folgende Regeln erfüllt werden:
    • Bei Tabellen mit # Einträge < 500: nach den 500 Änderungen
    • Bei Tabellen mit # Datensätze > 500: 20% + 500 Änderungen
    • Bei Tabellen, auf die sehr oft Update-Operationen ausgeführt werden, sollte eine manuelle Aktualisierung mithilfe der Systemprozedur sp_updatestats mit geeigneten Wartungsintervallen als Ergänzung zu der automatischen Aktualisierung stattfinden. Aber! Auf keinen Fall gleich nachdem Indizes neu erstellt oder reorganisiert wurden, da sp_updatestats die “guten” auf Tabellenzeilen basierenden Indexstatistiken mit den “weniger guten” auf Datenstichproben basierenden Statistiken überschreibt.
  7. Statistiken können automatisch synchron oder asynchron aktualisiert werden. Wenn eine DB große Tabellen enthält und bei einer Anwendung ein Time-Out auftritt, ist die empfohlene Einstellung: Statistiken sollen asynchron aktualisiert werden, d.h. eine Abfrage wird nach dem alten Ausführungsplan abgearbeitet, im Hintergrund wird die Aktualisierung der Statistik gestartet. Beim nächsten Mal wird ein Ausführungsplan nach der neuen Statistik erstellt.

Weitere Quellen:

SQL-Server-Statistiken: Ausführungspläne optimieren