Odziedziczyłem plany konserwacji, które wykonują następujące czynności:
- Wyczyść stare dane
- Sprawdza integralność DB
- Wykonuje kopie zapasowe bazy danych i dziennika transakcji
- Reorganizuje nasze indeksy
- Aktualizacje statystyk
- Usuń stare kopie zapasowe i pliki planu konserwacji
Z 23-minutowego planu konserwacji aktualizacja statystyk zajmuje aż 13 minut. Podczas tego 13-minutowego okresu dostęp do bazy danych jest blokowany (lub przynajmniej replikacja z tego DB do naszych pozostałych jest wstrzymana).
Moje pytanie brzmi:
Kiedy powinniśmy aktualizować statystyki i dlaczego?
To wydaje się być czymś, co powinniśmy robić rzadziej niż codziennie. Próbuję wyciągnąć nas z „tylko dlatego, że” nastawienia do wykonywania niepotrzebnej konserwacji.
sql-server
performance
maintenance
statistics
Cebulowy rycerz
źródło
źródło
Odpowiedzi:
Jeśli nie masz do tego okna konserwacji, codzienne aktualizowanie statystyk jest prawdopodobnie nieco przesadzone. Zwłaszcza jeśli masz włączoną funkcję Auto Update Statistics dla bazy danych. W swoim oryginalnym poście powiedziałeś, że użytkownicy widzą obniżenie wydajności z powodu tego planu konserwacji. Czy nie ma innego czasu na uruchomienie tego planu konserwacji? Nie ma innego okna? Widzę, że twój plan obejmuje reorganizację indeksów, kiedy przebudowujesz indeksy? Kiedy ta operacja się dzieje, statystyki są automatycznie aktualizowane (pod warunkiem, że nie jest wyłączone dla indeksu).
To, jak często powinieneś aktualizować statystyki, zależy w dużej mierze od tego, ile modyfikacji danych otrzymują twoje indeksy i dane . Jeśli jest bardzo mało modyfikacji (
INSERT
,UPDATE
,DELETE
) z danymi, a następnie można mieć bardziej rzadkie harmonogram zadania aktualizacji statystyk.Jednym ze sposobów sprawdzenia, czy statystyki są nieaktualne, jest sprawdzenie planów wykonania i jeśli szacowane wiersze znacznie różnią się od rzeczywistych wierszy zwróconych, jest to dobra wskazówka, że interwał należy zwiększyć. W twoim przypadku idziesz w drugą stronę i może być trochę prób. Aktualizuj statystyki co tydzień, a jeśli zaczniesz dostrzegać oznaki przestarzałych statystyk, to stamtąd.
Jeśli korzystasz z automatycznej aktualizacji statystyk dla swojej bazy danych, zapoznaj się z tym odniesieniem, aby poznać próg aktualizacji statystyk.
źródło
Kiedy aktualizować statystyki?
tylko wtedy, gdy funkcja automatycznych aktualizacji statystyk nie jest wystarczająca dla twoich wymagań. mam na myśli to, że jeśli automatyczne tworzenie i automatyczne aktualizacje statystyk są WŁĄCZONE, a otrzymujesz zły plan zapytań, ponieważ statystyki nie są dokładne lub aktualne, dobrym pomysłem może być kontrolowanie tworzenia i aktualizacji statystyk. ale jeśli nie masz nic przeciwko wydajności serwera SQL i czasowi wykonania zapytania.
następnie proponuję zatrzymać polecenie Statystyka aktualizacji w planach konserwacji
aktualizacja statystyk jest ważna i przydatna 1. pozwala optymalizatorowi zapytań SQL Server konsekwentnie tworzyć dobre plany zapytań, przy jednoczesnym utrzymaniu niskich kosztów programowania i administracji 2. Optymalizator zapytań wykorzystuje statystyki do oszacowania selektywności wyrażeń, a tym samym wielkości pośredniego i końcowe wyniki zapytania. 3. Dobre statystyki pozwalają optymalizatorowi dokładnie oszacować koszty różnych planów zapytań, a następnie wybrać plan wysokiej jakości
Jeśli chcesz ręcznie aktualizować statystyki, najpierw powinieneś wiedzieć, kiedy statystyki są aktualizowane automatycznie
Jeśli optymalizator zapytań SQL Server wymaga statystyk dla konkretnej kolumny w tabeli, która przeszła znaczną aktualizację od czasu ostatniego utworzenia lub aktualizacji statystyk, SQL Server automatycznie aktualizuje statystyki poprzez próbkowanie wartości kolumn (przy użyciu statystyk automatycznych aktualizacji) . Automatyczna aktualizacja statystyk jest uruchamiana przez optymalizację zapytania lub wykonanie skompilowanego planu i obejmuje tylko podzbiór kolumn, o których mowa w zapytaniu. Statystyki są aktualizowane przed kompilacją zapytania, jeśli AUTO_UPDATE_STATISTCS_ASYNC jest WYŁĄCZONY
tutaj są ładne artykuły, które mówią o tym, kiedy statystyki aktualizacji są uruchamiane na serwerze SQL
po dowiedzeniu się, kiedy statystyki są uruchamiane, pomoże Ci zdecydować, kiedy ręcznie zaktualizować statystyki
aby dowiedzieć się więcej o statystykach i ich wpływie na wydajność, polecam BrentOzar i Kimberly w sqlskills bardzo dobrych blogach i blogerach .
źródło