Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Monitoruje postęp zapytań w czasie rzeczywistym podczas wykonywania zapytania. Na przykład użyj tego DMV, aby określić, która część zapytania działa wolno. Dołącz do tego DMV z innymi systemowymi DMV, używając kolumn wskazanych w polu opisu. Albo dołącz do tego DMV z innymi licznikami wydajności (takimi jak Performance Monitor, xperf), korzystając z kolumn znaczników czasu.
Zwracana tabela
Liczniki zwracane są dla operatora na wątek. Wyniki są dynamiczne i nie pokrywają się z wynikami istniejących opcji, takich jak SET STATISTICS XML ON które generują wyjście dopiero po zakończeniu zapytania.
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
| session_id | smallint | Identyfikuje sesję, w której to zapytanie jest wykonywane. Źródła dm_exec_sessions.session_id. |
| identyfikator_żądania | int | Identyfikuje żądanie docelowe. Referencje dm_exec_sessions.request_id. |
| sql_handle | varbinary(64) | Jest tokenem, który jednoznacznie identyfikuje procedurę wsadową lub przechowywaną, której jest częścią zapytanie. Przypisy dm_exec_query_stats.sql_handle. |
| plan_handle | varbinary(64) | Jest tokenem, który jednoznacznie identyfikuje plan wykonania zapytań dla partii, która została wykonana, a jej plan znajduje się w pamięci podręcznej planu lub jest obecnie wykonywana. Odwołania dm_exec_query_stats.plan_handle. |
| physical_operator_name | nvarchar(256) | Fizyczne imię operatora. |
| node_id | int | Identyfikuje węzeł operatora w drzewie zapytań. |
| thread_id | int | Rozróżnia wątki (dla zapytania równoległego) należące do tego samego węzła operatora zapytania. |
| adres zadania | varbinary(8) | Identyfikuje zadanie SQLOS, którego używa ten wątek. Odwołania dm_os_tasks.task_address. |
| row_count | bigint | Liczba wierszy zwróconych przez operatora do tej pory. |
| rewind_count | bigint | Liczba przewijanych przewijań do tej pory. |
| rebind_count | bigint | Liczba rebindów do tej pory. |
| end_of_scan_count | bigint | Liczba zakończonych badań do tej pory. |
| estimate_row_count | bigint | Szacowana liczba wierszy. Może być przydatne porównanie estimated_row_count z rzeczywistym row_count. |
| first_active_time | bigint | Czas, w milisekundach, kiedy operator został po raz pierwszy wezwany. |
| last_active_time | bigint | Czas, w milisekundach, kiedy operator był ostatnio wzywany. |
| open_time | bigint | Znacznik czasu przy otwarciu (w milisekundach). |
| first_row_time | bigint | Znacznik czasu otwarcia pierwszego wiersza (w milisekundach). |
| last_row_time | bigint | Znacznik czasu od otwarcia ostatniego wiersza (w milisekundach). |
| close_time | bigint | Znacznik czasu przy zamknięciu (w milisekundach). |
| czas_trwania_ms | bigint | Całkowity upłyniony czas (w milisekundach) wykorzystany przez operacje docelowego węzła do tej pory. |
| cpu_time_ms | bigint | Całkowity czas CPU (w milisekundach) zużyty przez operacje węzła docelowego do tej pory. |
| id_bazy_danych | smallint | Identyfikator bazy danych, która zawiera obiekt, na którym wykonywane są odczyty i zapisy. |
| object_id | int | Identyfikator obiektu, na którym wykonywane są odczyty i zapisy. Bibliografia sys.objects.object_id. |
| index_id | int | Indeks (jeśli występuje), przeciwko któremu otwiera się zestaw wierszy. |
| scan_count | bigint | Liczba skanów tabel/indeksów do tej pory. |
| logical_read_count | bigint | Liczba logicznych odczytów do tej pory. |
| physical_read_count | bigint | Liczba fizycznych odczytów do tej pory. |
| read_ahead_count | bigint | Liczba odczytów do tej pory. |
| write_page_count | bigint | Liczba do tej pory napisanych stron przez rozlanie. |
| lob_logical_read_count | bigint | Liczba logicznych odczytów LOB do tej pory. |
| lob_physical_read_count | bigint | Liczba fizycznych odczytów LOB do tej pory. |
| lob_read_ahead_count | bigint | Liczba odczytów LOB do tej pory. |
| segment_read_count | int | Liczba odczytów segmentów do tej pory. |
| segment_skip_count | int | Liczba segmentów pominiętych do tej pory. |
| actual_read_row_count | bigint | Liczba wierszy odczytanych przez operatora przed zastosowaniem predykatu rezydualnego. |
| estimated_read_row_count | bigint |
Dotyczy do: Zaczynając od SQL Server 2016 (13.x) SP1. Liczba wierszy szacowanych do odczytania przez operatora przed zastosowaniem predykatu resztkowego. |
Uwagi ogólne
Jeśli węzeł planu zapytań nie ma żadnego I/O, wszystkie liczniki związane z I/O są ustawione na NULL.
Liczniki związane z I/O zgłaszane przez ten DMV są bardziej szczegółowe niż te SET STATISTICS IO zgłaszane w następujących dwóch aspektach:
SET STATISTICS IOgrupuje liczniki wszystkich wejść/wyjścia do danej tabeli razem. Dzięki temu DMV otrzymasz osobne liczniki dla każdego węzła w planie zapytania, który wykonuje operacje I/O do tabeli.Jeśli jest skanowanie równoległe, DMV raportuje liczniki dla każdego wątku równoległego pracującego podczas skanowania.
Począwszy od SQL Server 2016 (13.x) SP1, standardowa infrastruktura profilowania statystyk wykonywania zapytań istnieje równolegle z lekką infrastrukturą profilowania statystyk wykonywania zapytań.
SET STATISTICS XML ON i SET STATISTICS PROFILE ON zawsze korzystaj ze standardowej infrastruktury profilowania statystyk wykonywania zapytań. Aby sys.dm_exec_query_profiles zostać wypełnionym, jedna z infrastruktur profilowania zapytań musi być włączona. Aby uzyskać więcej informacji, zobacz Infrastruktura profilowania zapytań.
Uwaga / Notatka
Badanie zapytania musi rozpocząć się po włączeniu infrastruktury profilowania zapytań, ponieważ włączenie go po rozpoczęciu zapytania nie przyniesie wyników w sys.dm_exec_query_profiles. Aby uzyskać więcej informacji o tym, jak włączyć infrastrukturę profilowania zapytań, zobacz Infrastruktura profilowania zapytań.
Permissions
- Na SQL Server i Azure SQL Managed Instance wymaga
VIEW DATABASE STATEuprawnień i członkostwa w roli bazydb_ownerdanych. - W Azure SQL Database Premium Tiers wymaga
VIEW DATABASE STATEto uprawnień do bazy danych. - W celach usług Azure SQL Database Basic, S0 i S1 oraz dla baz danych w elastycznych pulach wymagane jest konto administratora serwera lub Microsoft Entra . We wszystkich pozostałych celach usług SQL Database wymagane jest uprawnienia
VIEW DATABASE STATEw bazie danych.
Uprawnienia dla programu SQL Server 2022 i nowszych
Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI BAZY DANYCH w bazie danych.
Przykłady
Krok 1: Zaloguj się do sesji, w której planujesz uruchomić zapytanie, które będziesz analizować sys.dm_exec_query_profiles. Aby skonfigurować zapytanie do profilowania, użyj SET STATISTICS PROFILE ON. Uruchom swoje zapytanie w tej samej sesji.
--Configure query for profiling with sys.dm_exec_query_profiles
SET STATISTICS PROFILE ON;
GO
--Or enable query profiling globally under SQL Server 2016 SP1 or above (not needed in SQL Server 2019)
DBCC TRACEON (7412, -1);
GO
--Next, run your query in this session, or in any other session if query profiling has been enabled globally
Krok 2: Zaloguj się do drugiej sesji, która różni się od tej, w której odbywa się Twoje zapytanie.
Poniższe zdanie podsumowuje postępy zapytania aktualnie prowadzonego w sesji 54. Aby to zrobić, oblicza łączną liczbę wierszy wyjściowych ze wszystkich wątków dla każdego węzła i porównuje ją z szacowaną liczbą wierszy wyjściowych dla danego węzła.
--Run this in a different session than the session in which your query is running.
--Note that you may need to change session id 54 below with the session id you want to monitor.
SELECT node_id,physical_operator_name, SUM(row_count) row_count,
SUM(estimate_row_count) AS estimate_row_count,
CAST(SUM(row_count)*100 AS float)/SUM(estimate_row_count)
FROM sys.dm_exec_query_profiles
WHERE session_id=54
GROUP BY node_id,physical_operator_name
ORDER BY node_id;
Zobacz też
Dynamiczne widoki zarządzania i funkcje (Transact-SQL)
Dynamiczne widoki zarządzania i funkcje związane z wykonywaniem (Transact-SQL)