Kiedy aktualizować statystyki?

Odziedziczyłem plany konserwacji, które wykonują następujące czynności:

  • Czyszczenie starych danych
  • Sprawdza integralność bazy danych
  • Wykonuje kopie zapasowe bazy danych i dzienników transakcji
  • Reorganizuje nasze indeksy
  • Aktualizuje statystyki
  • Usuń stare kopie zapasowe i pliki planu konserwacji

Z 23-minutowego planu konserwacji aktualizacja statystyk zajmuje aż 13 minut. W ciągu tych 13 minut dostęp do bazy danych jest zablokowany (lub przynajmniej replikacja z tej bazy danych do innych jest wstrzymana).

Moje pytanie brzmi:

Kiedy powinniśmy Aktualizowanie statystyk i dlaczego?

Wydaje się, że powinniśmy robić to rzadziej niż każdego dnia. Próbuję wyrwać nas z myślenia „tylko dlatego, że” robienie niepotrzebnych rzeczy Konserwacja.

Komentarze

  • Jak często / jak którekolwiek wiersze są wstawiane / aktualizowane / usuwane? Dla mnie jest to decydujący czynnik.
  • @JNK W całej bazie danych wstawiamy ~ 70 000 wierszy dziennie. Aktualizuj ~ 100 wierszy miesięcznie.
  • 1 – jest to bardziej istotne, jeśli wiemy, w TABELI, ile wierszy, a 2 jako procent. 70 tys. Wierszy dziennie w tabeli o wielkości 1 m to coś zupełnie innego niż w tabeli o wielkości 500 m.
  • Polecam użycie czegoś takiego jak ola.hallengren.com / … to rozwiązanie tylko przebudowuje / reorganizuje i aktualizuje to, co jest potrzebne. W ten sposób możesz skrócić czas, jaki zajmuje plan konserwacji, a także zaoszczędzić dużo miejsca na dzienniki.

Odpowiedź

Jeśli nie masz odpowiedniego okna serwisowego, codzienne aktualizowanie statystyk to prawdopodobnie trochę przesada . Zwłaszcza jeśli masz włączoną automatyczną aktualizację statystyk dla bazy danych. W swoim oryginalnym poście powiedziałeś, że użytkownicy zauważają spadek wydajności z powodu tego planu konserwacji. Czy nie ma innego czasu na przeprowadzenie tej konserwacji? plan? Żadnego innego okna? Widzę, że Twój plan obejmuje reorganizację indeksu, kiedy odbudowujesz indeksy? Kiedy ta operacja ma miejsce, statystyki są aktualizowane automatycznie (pod warunkiem, że nie jest to wyłączone dla dex).

To, jak często powinieneś aktualizować statystyki, zależy w dużej mierze od tego, jak bardzo modyfikowane są Twoje indeksy i dane . Jeśli jest bardzo niewiele modyfikacji (INSERT, UPDATE, DELETE) danych, wtedy możesz mieć rzadszy harmonogram zadania aktualizacji statystyk.

Jednym ze sposobów sprawdzenia, czy statystyki są nieaktualne, jest przyjrzenie się planom wykonania i czy oszacowane wiersze znacznie różnią się od rzeczywistych zwróconych wierszy to dobra wskazówka, że interwał należy zwiększyć. W twoim przypadku „idziesz w drugą stronę i może ci się przydać trochę czasu próbnego. Aktualizuj statystyki co tydzień, a jeśli zaczniesz widzieć ostrzegawcze oznaki nieaktualnych statystyk, idź dalej.

Jeśli korzystasz z automatycznych aktualizacji statystyk dla swojej bazy danych, zapoznaj się z tym odnośnikiem , aby poznać próg aktualizacji statystyk.

Komentarze

  • Odbudowujemy indeksy raz w tygodniu.
  • @ Onion-Knight Następnie aktualizujesz statystyki raz w tygodniu podczas odbudowywania indeksów . To może być wystarczające, jeśli ' ponownie przebudowujesz indeks w całej bazie danych.

Odpowiedź

Kiedy aktualizować statystyki?

wtedy i tylko wtedy, gdy statystyki automatycznej aktualizacji funkcja nie jest wystarczająco dobra dla twoich wymagań. mam na myśli, że jeśli statystyki automatycznego tworzenia i automatycznej aktualizacji są WŁĄCZONE i otrzymujesz zły plan zapytań, ponieważ statystyki nie są dokładne lub aktualne, dobrym pomysłem może być kontrola nad tworzeniem i aktualizacją statystyk. ale jeśli jesteś w porządku z wydajnością serwera sql i czasami wykonywania zapytań.

sugeruję zatrzymanie statystyk aktualizacji z Plany konserwacji

aktualizacja statystyk jest ważna i przydatna 1. umożliwia optymalizatorowi zapytań SQL Server spójne tworzenie dobrych planów zapytań, przy jednoczesnym utrzymaniu niskich kosztów rozwoju i administracji 2. Statystyki są używane przez optymalizator zapytań do oszacowania selektywności wyrażeń, a tym samym wielkości pośrednich i końcowych wyników zapytania. 3.Dobre statystyki pozwalają optymalizatorowi dokładnie oszacować koszt różnych planów zapytań, a następnie wybrać plan wysokiej jakości


Jeśli chcesz zaktualizować statystyki ręcznie, najpierw powinieneś wiedzieć, Gdy statystyki są aktualizowane automatycznie

Jeśli optymalizator zapytań programu SQL Server wymaga statystyk dla określonej kolumny w tabeli, która przeszła znaczną aktualizację aktywność od czasu ostatniego utworzenia lub aktualizacji statystyk, SQL Server automatycznie aktualizuje statystyki poprzez próbkowanie wartości kolumn (przy użyciu statystyk automatycznej aktualizacji). Automatyczna aktualizacja statystyk jest wyzwalana przez optymalizację zapytań lub wykonanie skompilowanego planu i obejmuje tylko podzbiór kolumn, do których odnosi się zapytanie. Statystyki są aktualizowane przed kompilacją zapytań, jeśli AUTO_UPDATE_STATISTCS_ASYNC jest wyłączone

Oto fajne artykuły, które mówią o tym, kiedy statystyki aktualizacji są uruchamiane na serwerze SQL

  1. from simple-talk Sekcja 13. Kiedy wyzwalana jest automatyczna aktualizacja statystyk?
  2. support.microsoft Sekcja: Automatyzacja określania Autostatów
  3. msdn.microsoft sekcja: Prowadzenie statystyk w SQL Server 2008

gdy dowiesz się, kiedy statystyki są uruchamiane, pomoże ci zdecydować, kiedy ręcznie aktualizować statystyki

aby dowiedzieć się więcej o statystykach & ich wpływie na wydajność polecam BrentOzar i Kimberly in sqlskills bardzo dobrzy blogi & blogerzy .

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *