sys.dm_db_index_usage_stats

Z dokumentacji technet ( http://msdn.microsoft.com/en-us/library/ms188755%28v=sql.105%29.aspx )

„Every individual seek, scan, lookup, or update on the specified index by one query execution is counted as a use of that index and increments the corresponding counter in this view. Information is reported both for operations caused by user-submitted queries, and for operations caused by internally generated queries, such as scans for gathering statistics. „

Innimi słowy jest takie miejsce w SQL Server, które po każdym restarcie SQL Server rejestruje od nowa statystyki dostępów do tabel we wszystkich bazach.
Każdorazowo, gdy użytkownik (kolumny *user*) lub system (kolumny *system*) „dotknie” indexu danej tabeli odkładany jest w liczniku ten fakt (+1) i zapamięta datę. Jeśli zapytanie nie używało żadnego indeksu to odłoży się ono w postaci index_id = 0. Dzięki temu możemy określić stopień wykorzystania jakiegoś indeksu przez polecenia odczytujące lub zapisujące dane.
Ale jest jeszcze jedna przydatna informacja, jaką daje ten widok dynamiczny, mianowicie można na jego podstawie wywnioskować czy dana tabela była używana od ostatniego restartu serwera (czy ktoś do niej coś zapisywał lub z niej odczytywał).

UWAGA!
Aby móc odpytywac się ww. widoku dynamicznego, niestety wymagane są uprawnienia na poziomie serwera o nazwie: VIEW SERVER STATE.
Domyślnie zwykły użytkownik nie ma takich uprawnień. Dlatego nie wszyscy będą mogli to zapytanie wywołać. Jednak dobrze jest wiedzieć o możliwości wyciągnięcia takiej informacji np. przez admina 🙂

Przykład:

Wynik:

 

wersja z schema name:

 

Post pierwotnie opublikowany jako TSQL na dziś #6

Dodaj komentarz