Was ist die Standardstichprobengröße für Statistiken in SQL Server?


11

Von MSDN :

Wenn keine der Beispieloptionen (SAMPLE, FULLSCAN, RESAMPLE)angegeben ist, tastet der Abfrageoptimierer die Daten ab und berechnet standardmäßig die Stichprobengröße.

Wie kann die Standardstichprobengröße von Statistiken ermittelt werden?

Ich habe MSDN durchgesehen, aber keine Formel oder Methode gefunden, um die Standardstichprobengröße zu ermitteln. Überall sind nur Formeln vorhanden, die die automatische Statistikaktualisierung auslösen. Hinweise sind hilfreich.

Antworten:


20

Wie kann man die Standardstichprobengröße von Statistiken ermitteln?

Ich würde aus dem Artikel Blogs.msdn zitieren

Auto Update Statistik Algorithmus:

Die Auto-Update-Statistiken werden also für jede Änderung von 500 + 20% in Tabellenzeilen ausgelöst. Natürlich haben wir in SQL 2012 einen verbesserten Algorithmus, nämlich SQRT (1000 * Tabellenzeilen), der viel besser ist.

Beim Auslösen wird die Standard-Abtastrate verwendet. Hier ist der Algorithmus, mit dem die Abtastrate berechnet wird.

1) Wenn die Tabelle <8 MB ist, werden die Statistiken mit einem vollständigen Scan aktualisiert.

2) Wenn die Tabelle> 8 MB ist, folgt sie einem Algorithmus. Dies verringert die Abtastrate, da die Anzahl der Zeilen in der Tabelle erhöht wird, um sicherzustellen, dass nicht zu viele Daten gescannt werden. Dies ist kein fester Wert, sondern wird vom Optimierer gesteuert. Es ist auch kein linearer Algorithmus.

Beispiel: Wenn wir 1.000.000 Zeilen haben, wird eine Abtastrate von 30% verwendet, aber wenn die Anzahl der Zeilen auf 8.000.000 erhöht wird, wird die Abtastrate auf 10% reduziert. Diese Abtastraten unterliegen nicht der Kontrolle der Datenbankadministratoren, aber der Optimierer entscheidet darüber.

Um weiter zu verstehen, schlage ich vor, dass Sie lesen

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.