W SQL Server statystyki są aktualizowane automatycznie, gdy są Auto Update Statistics
w True
(co jest ustawieniem domyślnym). Czy istnieje powód ręcznej aktualizacji statystyk i w jakich okolicznościach?
19
W SQL Server statystyki są aktualizowane automatycznie, gdy są Auto Update Statistics
w True
(co jest ustawieniem domyślnym). Czy istnieje powód ręcznej aktualizacji statystyk i w jakich okolicznościach?
Jasne, jeśli Twoje dane zmieniają się częściej niż wskaźnik automatycznych statystyk (lub, powiedzmy, aktualizujesz <20% wierszy często, np. Aktualizując statusy lub znaczniki daty / godziny). Lub jeśli twoja tabela jest ogromna i nie zmienia się wystarczająco, aby wywołać automatyczne aktualizacje statystyk. Lub jeśli masz przefiltrowane indeksy ( ponieważ próg automatycznych statystyk nadal opiera się na% zmian w całej tabeli, a nie na% zmiany podzbioru wierszy w przefiltrowanym indeksie ).
Kilka innych (powierzchownych) powodów:
Statystyki automatycznej aktualizacji będą blokować zapytanie, które uruchomiło aktualizację, dopóki nowe statystyki nie będą gotowe.
... Chyba że włączysz również automatyczne aktualizowanie statystyk asynchronicznie. Wówczas zapytanie, które uruchomiło aktualizację, nie będzie czekać na nowe statystyki, ale potencjalnie będzie działać ze starymi, niepoprawnymi statystykami.
Wystąpiły również dziwne problemy z blokowaniem, gdy baza danych ze stosunkowo dużymi tabelami (44M wierszy, 8,5 GB) zaczynała aktualizować statystyki. Jednak wycofaliśmy tę aplikację, zanim naprawdę udało mi się wyśledzić, co się dzieje.
źródło
Tak, pamiętaj, że automatyczne statystyki są zawsze generowane z domyślną częstotliwością próbkowania. Ta domyślna częstotliwość próbkowania może nie zapewniać dokładnych statystyk reprezentujących dane.
http://sqlblog.com/blogs/elisabeth_redei/archive/2009/03/01/lies-damned-lies-and-statistics-part-i.aspx
źródło