| Termin | Definicja |
|---|---|
| Widok sys.stats | sys.stats zwraca listę statystyk zdefiniowanych dla tabel i indeksów w bazie. Katalog statystyk, na których opiera się optymalizatorSilnik bazy wybiera plan wykonania zapytania na podstawie szacunków, ile wierszy spełni dany warunek. Szacunki te biorą się ze statystyk — histogramów rozkładu wartości w kolumnach. Omawiany widok zwraca listę wszystkich takich obiektów w bazie wraz z informacją, czy powstały automatycznie przy pierwszym zapytaniu odwołującym się do kolumny, czy zostały utworzone ręcznie, czy towarzyszą indeksowi, a także czy zdefiniowano dla nich filtr zawężający zakres wierszy. Statystyki tworzone samoczynnie rozpoznaje się po nazwie zaczynającej się od charakterystycznego przedrostka systemowego. Sprawdzenie, czy dane nie są przeterminowaneSam spis obiektów niewiele daje bez informacji o ich świeżości. Datę ostatniej aktualizacji zwraca funkcja STATS_DATE wywołana z identyfikatorem obiektu i numerem statystyki, natomiast pełniejszy obraz daje funkcja sys.dm_db_stats_properties: pokazuje liczbę wierszy w tabeli w momencie zbierania danych, liczbę wierszy faktycznie spróbkowanych oraz licznik modyfikacji od ostatniego odświeżenia. Ostatnia z tych wartości jest najważniejsza — mówi wprost, jak bardzo tabela zmieniła się od czasu, gdy optymalizator dostał aktualny obraz. Automatyczne odświeżanie uruchamia się dopiero po przekroczeniu progu liczby zmian, więc w bardzo dużych tabelach potrafi nie zadziałać przez tygodnie, mimo że dopisano setki tysięcy wierszy. Objawy pracy na nieaktualnych szacunkachTypowy obraz to raport, który przez rok wykonywał się w kilkanaście sekund, a pewnego dnia zaczyna trwać kwadrans, przy niezmienionym zapytaniu i sprzęcie. Przyczyną bywa plan oparty na założeniu, że tabela ma tysiąc wierszy, podczas gdy ma ich milion — silnik wybiera wtedy przeglądanie w pętli zamiast operacji zbiorczej. Drugi objaw dotyczy kolumn z datami: statystyki zebrane miesiąc temu nie zawierają w histogramie wartości nowszych, więc zapytanie o dokumenty z bieżącego tygodnia dostaje szacunek bliski zeru. Trzeci przypadek to próbkowanie zbyt małej części tabeli, dające histogram niereprezentatywny dla danych o nierównym rozkładzie. Osobno warto wiedzieć, że przebudowa indeksu odświeża statystyki z nim związane, ale nie te utworzone osobno na kolumnach — dlatego samo nocne przebudowywanie indeksów nie zastępuje aktualizacji statystyk. Przyspieszanie baz programów sprzedażowychPrzy zgłoszeniach o narastającym spowolnieniu Subiekta, WAPRO czy Comarcha sprawdzamy to jako jedną z pierwszych rzeczy, bo bywa najtańszą do naprawienia — wcześniej niż rozmowa o wymianie serwera. Ustawiamy wtedy sensowny plan konserwacji bazy zamiast pojedynczej doraźnej akcji. Prace na produkcyjnej bazie planujemy poza godzinami sprzedaży, także nocą. |