Jakie są praktyczne skutki ostrzeżenia sys.dm_exec_query_stats w dokumentacji?

10

Dokumentacja dla sys.dm_exec_query_statsstwierdza co następuje:

Wstępne zapytanie sys.dm_exec_query_stats może dawać niedokładne wyniki, jeśli na serwerze jest aktualnie wykonywane obciążenie. Dokładniejsze wyniki można ustalić, uruchamiając ponownie zapytanie.

Czasami sprawdzam ten DMV podczas aktywnego obciążenia i wolę dokładne wyniki. Nie wiem, jak zastosować powyższe ostrzeżenie w praktyce. Czy powinienem zawsze sprawdzać DMV dwukrotnie i używać drugiego zestawu wyników, ponieważ będzie to bardziej dokładne? To wydaje się trochę naciągane. Czy muszę zdawać sobie sprawę z tego, w jaki sposób DMV może być niedokładny, aby móc uwzględnić to w mojej analizie? Jeśli tak, to jakie niedokładności mogą się pojawić: brakujące wiersze, nieaktualne wartości, niespójne wiersze lub coś innego?

Jakie są najlepsze praktyki podczas korzystania sys.dm_exec_query_statsz aktywnego obciążenia?

Joe Obbish
źródło

Odpowiedzi:

6

Zaktualizowałem dokumentację, aby była bardziej prosta w sformułowaniu. Chodziło o to, aby poinformować użytkownika, że ​​uruchomienie zapytania przeciwko DMV spowoduje wygenerowanie danych wyjściowych tylko dla elementów, które zostały ukończone, a nie dla elementów w locie. Dlatego uruchom obciążenie w całości, aby upewnić się, że wszystko zostało przechwycone.

Nowe sformułowanie będzie następujące i zastosuje różne DMV, do których włączono poprzednie sformułowanie.

Wyniki sys.dm_exec_query_stats mogą się różnić z każdym wykonaniem, ponieważ dane odzwierciedlają tylko gotowe zapytania, a nie te, które są nadal w locie.

Sean Gallardy
źródło
4

Nie wiem, jak zastosować powyższe ostrzeżenie w praktyce.

To dlatego, że jest niejasne. Na końcu strony dokumentacji znajduje się spacja, na której można wyrazić opinię. Jest to właściwie jedyny sposób, w jaki ktoś będzie mógł zajrzeć do historii strony z dokumentacją i zobaczyć, dlaczego to ostrzeżenie zostało dodane, jeśli nadal jest konieczne lub wymaga aktualizacji.

Rzuciłem okiem na implementację w SQL Server 2017 CU 15 i wydaje się, że nie ma specjalnego powodu, aby oczekiwać niespójności (lub „niedokładności”), poza sumami aktualizowanymi tylko na końcu każdego wykonania instrukcji .

Paul White 9
źródło