Jaki jest domyślny rozmiar przykładowej statystyki w SQL Server?


12

Z MSDN :

Jeśli żadna z opcji próbkowania nie (SAMPLE, FULLSCAN, RESAMPLE)jest określona, ​​optymalizator zapytań pobiera próbki danych i domyślnie oblicza wielkość próbki.

Jak zidentyfikować domyślny rozmiar próby statystyk?

Przeszedłem przez MSDN, ale nie znalazłem żadnej formuły ani metody identyfikującej domyślny rozmiar próbki. Wszędzie są tylko formuły uruchamiające automatyczną aktualizację statystyk. Wszelkie wskazówki będą pomocne.

Odpowiedzi:


20

Jak zidentyfikować domyślny rozmiar próby statystyk?

Cytuję z artykułu Blogs.msdn

Algorytm statystyk automatycznej aktualizacji:

Tak więc statystyki automatycznej aktualizacji będą uruchamiane przy każdej zmianie 500 + 20% w wierszach tabeli. Oczywiście w SQL 2012 mamy ulepszony algorytm, którym jest SQRT (1000 * wierszy tabeli), który jest znacznie lepszy.

Gdy zostanie uruchomiony, użyje domyślnej częstotliwości próbkowania, a oto algorytm obliczania częstotliwości próbkowania.

1) Jeśli tabela <8 MB, aktualizuje statystyki za pomocą pełnego skanowania.

2) Jeśli tabela> 8 MB, postępuje zgodnie z algorytmem. Zmniejsza to częstotliwość próbkowania, ponieważ liczba wierszy w tabeli jest zwiększana, aby upewnić się, że nie skanujemy zbyt dużej ilości danych. Nie jest to stała wartość, ale jest pod kontrolą optymalizatora. Nie jest to również algorytm liniowy.

Przykład: jeśli mamy 1 000 000 wierszy, użyłoby częstotliwości próbkowania 30%, ale gdy liczba wierszy wzrośnie do 8 000 000, zmniejszyłaby częstotliwość próbkowania do 10%. Te częstotliwości próbkowania nie są kontrolowane przez DBA, ale decyduje o tym optymalizator.

Aby lepiej zrozumieć, proponuję przeczytać

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.