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
Aparat bazy danych programu SQL Server zapewnia dostęp do informacji środowiska uruchomieniowego dotyczących planów wykonywania zapytań. Jedną z najważniejszych akcji występujących w przypadku wystąpienia problemu z wydajnością jest dokładne zrozumienie obciążenia, które jest wykonywane i jak jest napędzane użycie zasobów. W związku z tym dostęp do rzeczywistego planu wykonania jest ważny.
Chociaż finalizacja zapytania jest wymaganiem wstępnym dla dostępności rzeczywistego planu zapytania, statystyki zapytań na żywo mogą zapewnić wgląd na bieżąco w proces realizacji zapytania w miarę jak dane przepływają z jednego operatora planu zapytania do innego. Plan zapytania na żywo wyświetla ogólny postęp zapytania oraz statystyki wykonania na poziomie operatora, takie jak liczba utworzonych wierszy, upłyniony czas, postęp operatora itp. Ponieważ te dane są dostępne w czasie rzeczywistym bez konieczności oczekiwania na zakończenie zapytania, te statystyki wykonania są niezwykle przydatne do debugowania problemów z wydajnością zapytań, takich jak długotrwałe zapytania lub zapytania działające w nieskończoność.
Standardowa infrastruktura profilowania statystyk wykonywania zapytań
Należy włączyć infrastrukturę profilu statystyk wykonywania zapytań lub standardowe profilowanie, aby zbierać informacje o planach wykonywania, a mianowicie o liczbie wierszy, użyciu procesora CPU i operacji we/wy. Następujące metody zbierania informacji o planie wykonywania dla sesji docelowej używają standardowej infrastruktury profilowania:
Note
Wybranie przycisku Uwzględnij statystyki zapytań na żywo w programie SQL Server Management Studio używa standardowej infrastruktury profilowania. W nowszych wersjach programu SQL Server, jeśli jest włączona uproszczona infrastruktura profilowania , jest używana przez statystyki zapytań na żywo zamiast standardowego profilowania w przypadku wyświetlania za pomocą monitora aktywności lub bezpośredniego wykonywania zapytań dotyczących sys.dm_exec_query_profiles widoku DMV.
Następujące metody zbierania informacji o planie wykonywania globalnie dla wszystkich sesji używają standardowej infrastruktury profilowania:
- Zdarzenie
query_post_execution_showplanrozszerzone. Aby włączyć zdarzenia rozszerzone, zobacz Monitorowanie aktywności systemu przy użyciu zdarzeń rozszerzonych. - Zdarzenie śledzenia XML Showplan w SQL Trace i SQL Server Profiler. Aby uzyskać więcej informacji na temat tego zdarzenia śledzenia, zobacz Klasa zdarzeń XML programu Showplan.
Podczas uruchamiania rozszerzonej sesji zdarzeń, która używa query_post_execution_showplan zdarzenia, sys.dm_exec_query_profiles dynamiczny dynamiczny widok zarządzania jest również wypełniany, co umożliwia wykonywanie statystyk zapytań na żywo dla wszystkich sesji przy użyciu monitora aktywności lub bezpośredniego wykonywania zapytań dotyczących dynamicznego widoku zarządzania. Aby uzyskać więcej informacji, sprawdź Statystyki zapytań na żywo.
Uproszczona infrastruktura profilowania statystyk wykonywania zapytań
Począwszy od programu SQL Server 2014 (12.x) SP2 i SQL Server 2016 (13.x), wprowadzono nową uproszczonej infrastruktury profilowania statystyk wykonywania zapytańlub uproszczone profilowanie.
Note
Natywnie skompilowane procedury składowane nie są obsługiwane w przypadku uproszczonego profilowania.
Uproszczona infrastruktura profilowania statystyk wykonywania zapytań w wersji 1
Dotyczy: SQL Server 2014 (12.x) SP2 do programu SQL Server 2016 (13.x).
Począwszy od programu SQL Server 2014 (12.x) SP2 i PROGRAMU SQL Server 2016 (13.x), obciążenie związane z wydajnością zbierania informacji o planach wykonywania zostało zmniejszone wraz z wprowadzeniem uproszczonego profilowania. W przeciwieństwie do profilowania standardowego, uproszczone profilowanie nie zbiera informacji o środowisku uruchomieniowym procesora CPU. Jednak uproszczone profilowanie nadal zbiera informacje o liczbie wierszy i użyciu operacji we/wy.
Wprowadzono również nowe query_thread_profile zdarzenie rozszerzone, które korzysta z uproszczonego profilowania. To zdarzenie rozszerzone uwidacznia statystyki wykonywania poszczególnych operatorów, co pozwala uzyskać lepszy wgląd w wydajność każdego węzła i wątku. Przykładowa sesja korzystająca z tego zdarzenia rozszerzonego można skonfigurować tak, jak w poniższym przykładzie:
CREATE EVENT SESSION [NodePerfStats] ON SERVER
ADD EVENT sqlserver.query_thread_profile
(
ACTION (sqlos.scheduler_id,
sqlserver.database_id,
sqlserver.is_system,
sqlserver.plan_handle,
sqlserver.query_hash_signed,
sqlserver.query_plan_hash_signed,
sqlserver.server_instance_name,
sqlserver.session_id,
sqlserver.session_nt_username,
sqlserver.sql_text)
)
ADD TARGET package0.ring_buffer (SET max_memory = (25600))
WITH
(
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = OFF
);
Note
Aby uzyskać więcej informacji na temat obciążenia związanego z wydajnością profilowania zapytań, zobacz wpis w blogu Developers Choice: Query progress - anytime, anywhere.
Podczas uruchamiania rozszerzonej sesji zdarzeń, która używa query_thread_profile zdarzenia, sys.dm_exec_query_profiles widok DMV jest również wypełniany przy użyciu uproszczonego profilowania, co umożliwia statystykę zapytań na żywo dla wszystkich sesji przy użyciu monitora aktywności lub bezpośredniego wykonywania zapytań dotyczących dynamicznego widoku zarządzania.
Lekka infrastruktura profilowania statystyk wykonywania zapytań wersja 2
Dotyczy: SQL Server 2016 (13.x) SP1 do programu SQL Server 2017 (14.x).
Program SQL Server 2016 (13.x) SP1 zawiera poprawioną wersję uproszczonego profilowania z minimalnym obciążeniem. Uproszczone profilowanie można również włączyć globalnie przy użyciu flagi śledzenia 7412 dla wersji określonych wcześniej w sekcji Dotyczy. Wprowadzono nowy sys.dm_exec_query_statistics_xml DMF w celu zwrócenia planu wykonywania zapytań dla żądań w locie.
Począwszy od programu SQL Server 2016 (13.x) z dodatkiem SP2 CU3 i programu SQL Server 2017 (14.x) CU11, jeśli uproszczone profilowanie nie jest włączone globalnie, można użyć nowego argumentu QUERY_PLAN_PROFILE w celu włączenia uproszczonego profilowania na poziomie zapytania dla każdej sesji. Po zakończeniu zapytania zawierającego tę nową wskazówkę zostanie również wyświetlone nowe query_plan_profile zdarzenie rozszerzone, które udostępnia rzeczywisty kod XML planu wykonania podobny do zdarzenia rozszerzonego query_post_execution_showplan .
Note
Zdarzenie query_plan_profile rozszerzone używa również uproszczonego profilowania, nawet jeśli wskazówka zapytania nie jest używana.
Przykładowa sesja używająca zdarzenia rozszerzonego query_plan_profile można skonfigurować tak jak w poniższym przykładzie:
CREATE EVENT SESSION [PerfStats_LWP_Plan] ON SERVER
ADD EVENT sqlserver.query_plan_profile
(
ACTION (sqlos.scheduler_id,
sqlserver.database_id,
sqlserver.is_system,
sqlserver.plan_handle,
sqlserver.query_hash_signed,
sqlserver.query_plan_hash_signed,
sqlserver.server_instance_name,
sqlserver.session_id,
sqlserver.session_nt_username,
sqlserver.sql_text)
)
ADD TARGET package0.ring_buffer (SET max_memory = (25600))
WITH
(
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = OFF
);
Uproszczone statystyki wykonywania zapytań profilowania infrastruktury w wersji 3
Dotyczy: SQL Server 2019 (15.x) i nowsze wersje oraz Azure SQL Database
Program SQL Server 2019 (15.x) i usługa Azure SQL Database zawierają nowo zmienioną wersję uproszczonego profilowania zbierającego informacje o liczbie wierszy dla wszystkich wykonań. Uproszczone profilowanie jest domyślnie włączone w programie SQL Server 2019 (15.x) i usłudze Azure SQL Database. W programie SQL Server 2019 (15.x) i nowszych wersjach flaga śledzenia 7412 nie działa. Uproszczone profilowanie można wyłączyć na poziomie bazy danych przy użyciu LIGHTWEIGHT_QUERY_PROFILINGkonfiguracji o określonym zakresie bazy danych: ALTER DATABASE SCOPED CONFIGURATION SET LIGHTWEIGHT_QUERY_PROFILING = OFF;.
Wprowadzono nową funkcję DMF sys.dm_exec_query_plan_stats, aby zwrócić odpowiednik ostatniego znanego rzeczywistego planu wykonania dla większości zapytań, i jest ona nazywana statystykami ostatniego planu zapytań . Ostatnie statystyki planu zapytania można włączyć na poziomie bazy danych przy użyciu LAST_QUERY_PLAN_STATSkonfiguracji o określonym zakresie bazy danych: ALTER DATABASE SCOPED CONFIGURATION SET LAST_QUERY_PLAN_STATS = ON;.
Nowe query_post_execution_plan_profile zdarzenie rozszerzone zbiera odpowiednik rzeczywistego planu wykonywania na podstawie uproszczonego profilowania, w przeciwieństwie do query_post_execution_showplan, który korzysta ze standardowego profilowania. Program SQL Server 2017 (14.x) oferuje również to zdarzenie, od wersji CU14. Przykładowa sesja używająca zdarzenia rozszerzonego query_post_execution_plan_profile można skonfigurować tak jak w poniższym przykładzie:
CREATE EVENT SESSION [PerfStats_LWP_All_Plans] ON SERVER
ADD EVENT sqlserver.query_post_execution_plan_profile
(
ACTION (sqlos.scheduler_id,
sqlserver.database_id,
sqlserver.is_system,
sqlserver.plan_handle,
sqlserver.query_hash_signed,
sqlserver.query_plan_hash_signed,
sqlserver.server_instance_name,
sqlserver.session_id,
sqlserver.session_nt_username,
sqlserver.sql_text)
)
ADD TARGET package0.ring_buffer (SET max_memory = (25600))
WITH
(
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = OFF
);
Przykład 1 — rozszerzona sesja zdarzeń przy użyciu profilowania standardowego
CREATE EVENT SESSION [QueryPlanOld] ON SERVER
ADD EVENT sqlserver.query_post_execution_showplan
(
ACTION (sqlos.task_time,
sqlserver.database_id,
sqlserver.database_name,
sqlserver.query_hash_signed,
sqlserver.query_plan_hash_signed,
sqlserver.sql_text)
)
ADD TARGET package0.event_file
(
SET filename = N'C:\Temp\QueryPlanStd.xel'
)
WITH
(
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = OFF
);
Przykład 2 — rozszerzona sesja zdarzeń przy użyciu uproszczonego profilowania
CREATE EVENT SESSION [QueryPlanLWP] ON SERVER
ADD EVENT sqlserver.query_post_execution_plan_profile
(
ACTION (sqlos.task_time,
sqlserver.database_id,
sqlserver.database_name,
sqlserver.query_hash_signed,
sqlserver.query_plan_hash_signed,
sqlserver.sql_text)
)
ADD TARGET package0.event_file
(
SET filename = N'C:\Temp\QueryPlanLWP.xel'
)
WITH
(
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = OFF
);
Wskazówki dotyczące użycia infrastruktury profilowania zapytań
Poniższa tabela zawiera podsumowanie akcji umożliwiających profilowanie standardowe lub uproszczone profilowanie, zarówno globalnie (na poziomie serwera) jak i w jednej sesji. Zawiera również najwcześniejszą wersję, dla której jest dostępna akcja.
| Scope | Profilowanie standardowe | Uproszczone profilowanie |
|---|---|---|
| Global | Sesja zdarzeń rozszerzonych za pomocą query_post_execution_showplan środowiska XE; Począwszy od programu SQL Server 2012 (11.x) |
Flaga śledzenia 7412; Począwszy od programu SQL Server 2016 (13.x) SP1 |
| Global | Śledzenie SQL i profiler programu SQL Server ze zdarzeniem Showplan XML śledzenia |
Sesja zdarzeń rozszerzonych za pomocą query_thread_profile środowiska XE; Począwszy od programu SQL Server 2014 (12.x) SP2 |
| Global | N/A | Sesja zdarzeń rozszerzonych za pomocą query_post_execution_plan_profile środowiska XE; Począwszy od programu SQL Server 2017 (14.x) CU14 i PROGRAMU SQL Server 2019 (15.x) |
| Session | Użyj SET STATISTICS XML ON |
QUERY_PLAN_PROFILE Użyj wskazówki zapytania wraz z sesją zdarzeń rozszerzonych z query_plan_profile XE; Począwszy od programu SQL Server 2016 (13.x) z dodatkiem SP2 CU3 i programu SQL Server 2017 (14.x) CU11 |
| Session | Użyj SET STATISTICS PROFILE ON |
N/A |
| Session | Wybierz przycisk Statystyki zapytań na żywo w programie SSMS; Począwszy od programu SQL Server 2014 (12.x) SP2 | N/A |
Remarks
Important
Ze względu na możliwe naruszenie zabezpieczeń dostępu podczas wykonywania monitorującej procedury składowanej, która odwołuje się do sys.dm_exec_query_statistics_xml, upewnij się, że KB 4078596 jest zainstalowany w SQL Server 2016 (13.x) i SQL Server 2017 (14.x).
Począwszy od uproszczonego profilowania w wersji 2 i niskiego obciążenia, każdy serwer, który nie jest jeszcze powiązany z procesorem CPU, może stale uruchamiać uproszczone profilowanie i umożliwiać specjalistom bazy danych korzystanie z jakiegokolwiek uruchomionego wykonywania w dowolnym momencie, na przykład przy użyciu monitora aktywności lub bezpośredniego wykonywania zapytańsys.dm_exec_query_profiles, a następnie uzyskać plan zapytania ze statystykami środowiska uruchomieniowego.
Aby uzyskać więcej informacji na temat obciążenia związanego z wydajnością profilowania zapytań, zobacz wpis w blogu Developers Choice: Query progress - anytime, anywhere.
Zdarzenia rozszerzone korzystające z uproszczonego profilowania korzystają z informacji ze standardowego profilowania, jeśli standardowa infrastruktura profilowania jest już włączona. Na przykład jest uruchomiona rozszerzona sesja zdarzeń używająca query_post_execution_showplan, a uruchomiona jest kolejna sesja używająca query_post_execution_plan_profile. Druga sesja nadal używa informacji ze standardowego profilowania.
Note
W programie SQL Server 2017 (14.x) profilowanie uproszczone jest domyślnie wyłączone, ale jest aktywowane po uruchomieniu śledzenia query_post_execution_plan_profile zdarzeń rozszerzonych, a następnie jest ponownie dezaktywowane po zatrzymaniu śledzenia. W związku z tym, jeśli rozszerzone ślady zdarzeń oparte na query_post_execution_plan_profile są często uruchamiane i zatrzymywane w wystąpieniu programu SQL Server 2017 (14.x), należy aktywować uproszczone profilowanie na poziomie globalnym z flagą śledzenia 7412, aby uniknąć powtarzającej się aktywacji/dezaktywacji.
Treści powiązane
- Monitorowanie i dostrajanie pod kątem wydajności
- Narzędzia do monitorowania wydajności i dostrajania
- Otwórz monitor aktywności w programie SQL Server Management Studio (SSMS)
- Monitor aktywności
- Monitorowanie wydajności za pomocą magazynu zapytań
- Monitorowanie aktywności systemowej przy użyciu zdarzeń rozszerzonych
- sys.dm_exec_query_statistics_xml
- sys.dm_exec_query_profiles
- Ustaw flagi śledzenia za pomocą DBCC TRACEON (Transact-SQL)
- Odwołanie do operatora logicznego i fizycznego planu wykonania
- rzeczywisty plan wykonania
- statystyki zapytań na żywo