Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Övervakar förfråganens framsteg i realtid medan frågan körs. Använd till exempel denna DMV för att avgöra vilken del av frågan som går långsamt. Koppla denna DMV till andra system-DMV:er med hjälp av kolumnerna som anges i beskrivningsfältet. Eller koppla denna DMV till andra prestandaräknare (såsom Performance Monitor, xperf) genom att använda tidsstämpelkolumnerna.
Tabell returnerad
Räknarna som returneras är per operator per tråd. Resultaten är dynamiska och stämmer inte överens med resultaten från befintliga alternativ, såsom SET STATISTICS XML ON att endast skapa utdata när frågan är klar.
| Kolumnnamn | Datatyp | Description |
|---|---|---|
| session_id | smallint | Identifierar sessionen där denna fråga körs. Referenser dm_exec_sessions.session_id. |
| förfrågan_id | int | Identifierar målbegäran. Referenser dm_exec_sessions.request_id. |
| sql_handle | varbinary(64) | Är en token som unikt identifierar batchen eller den lagrade procedur som frågan ingår i. Referenser dm_exec_query_stats.sql_handle. |
| plan_handle | varbinary(64) | Är en token som unikt identifierar en frågeexekveringsplan för en batch som har körts och vars plan finns i plancachen, eller för närvarande körs. Referenser dm_exec_query_stats.plan_handle. |
| physical_operator_name | nvarchar(256) | Fysisk operatörsnamn. |
| node_id | int | Identifierar en operatornod i frågeträdet. |
| thread_id | int | Särskiljer trådarna (för en parallell fråga) som tillhör samma frågeoperatornod. |
| uppgiftsadress | varbinary(8) | Identifierar SQLOS-uppgiften som denna tråd använder. Referenser dm_os_tasks.task_address. |
| row_count | bigint | Antal rader som operatören hittills returnerat. |
| rewind_count | bigint | Antal tillbakagångar hittills. |
| rebind_count | bigint | Antal ombindningar hittills. |
| end_of_scan_count | bigint | Antal avslutade skanningar hittills. |
| estimate_row_count | bigint | Uppskattat antal rader. Det kan vara användbart att jämföra estimated_row_count med den faktiska row_count. |
| first_active_time | bigint | Tiden, i millisekunder, när operatören först blev uppringd. |
| last_active_time | bigint | Tiden, i millisekunder, när operatören senast blev uppringd. |
| open_time | bigint | Tidsstämpel när den är öppen (i millisekunder). |
| first_row_time | bigint | Tidsstämpel när första raden öppnades (i millisekunder). |
| last_row_time | bigint | Tidsstämpel när sista raden öppnades (i millisekunder). |
| close_time | bigint | Tidsstämpel när du är nära (i millisekunder). |
| förfluten_tid_ms | bigint | Total förfluten tid (i millisekunder) som hittills använts av målnodens operationer. |
| cpu_time_ms | bigint | Total CPU-tid (i millisekunder) som används av målnodens operationer hittills. |
| database_id | smallint | ID för databasen som innehåller objektet där läsningarna och skrivningarna utförs. |
| object_id | int | Identifieraren för objektet på vilket läsningarna och skrivningarna utförs. Referenser sys.objects.object_id. |
| index_id | int | Indexet (om något) som raduppsättningen öppnas mot. |
| scan_count | bigint | Antal tabell-/indexskanningar hittills. |
| logical_read_count | bigint | Antal logiska läsningar hittills. |
| physical_read_count | bigint | Antal fysiska läsningar hittills. |
| read_ahead_count | bigint | Antal lästips hittills. |
| write_page_count | bigint | Antal sidskrivningar hittills på grund av spill. |
| lob_logical_read_count | bigint | Antal logiska LOB-läsningar hittills. |
| lob_physical_read_count | bigint | Antal fysiska LOB-läsningar hittills. |
| lob_read_ahead_count | bigint | Antal LOB-läsningar hittills. |
| segment_read_count | int | Antal segmentläsningar hittills. |
| segment_skip_count | int | Antal segment har hoppats över hittills. |
| actual_read_row_count | bigint | Antal rader lästa av en operator innan residualpredikatet tillämpades. |
| estimated_read_row_count | bigint |
Gäller för: Börjar med SQL Server 2016 (13.x) SP1. Antal rader som uppskattas läsas av en operator innan restpredikatet applicerades. |
Allmänna kommentarer
Om frågeplannoden inte har någon I/O, sätts alla I/O-relaterade räknare till NULL.
De I/O-relaterade räknarna som rapporteras av detta DMV är mer detaljerade än de som rapporteras av SET STATISTICS IO på följande två sätt:
SET STATISTICS IOgruppera räknarna för all I/O till en given tabell. Med detta DMV får du separata räknare för varje nod i frågeplanen som utför I/O till tabellen.Om det sker en parallell skanning rapporterar denna DMV räknare för varje parallell tråd som arbetar med skanningen.
Från och med SQL Server 2016 (13.x) SP1 finns den standardiserade profilinfrastrukturen för profilering av frågeexekveringsstatistik sida vid sida med en lättviktig infrastruktur för profilering av frågeexekveringsstatistik.
SET STATISTICS XML ON och SET STATISTICS PROFILE ON använd alltid standardinfrastrukturen för profilering av frågeexekveringsstatistik. För sys.dm_exec_query_profiles att fyllas måste en av frågorprofileringsinfrastrukturerna vara aktiverad. Mer information finns i infrastruktur för frågeprofilering.
Anmärkning
Sökningen som undersöks måste starta efter att frågeprofileringsinfrastrukturen har aktiverats, och aktivering efter att frågan startat ger inga resultat i sys.dm_exec_query_profiles. För mer information om hur man aktiverar frågeprofileringsinfrastrukturer, se Query Profiling Infrastructure.
Permissions
- På SQL Server och Azure SQL Managed Instance krävs
VIEW DATABASE STATEbehörighet och medlemskap idb_ownerdatabasrollen. - På Azure SQL Database Premium Tiers krävs behörighet
VIEW DATABASE STATEi databasen. - På Azure SQL Database Basic, S0 och S1 tjänstemål, samt för databaser i elastiska pooler, krävs serveradministratörskontot eller Microsoft Entra-administratörskontot . För alla andra SQL-databastjänstemål
VIEW DATABASE STATEkrävs behörighet i databasen.
Behörigheter för SQL Server 2022 och senare
Kräver behörigheten VISA DATABASPRESTANDATILLSTÅND för databasen.
Examples
Steg 1: Logga in på en session där du planerar att köra den fråga du ska analysera med sys.dm_exec_query_profiles. För att konfigurera frågan för profilering använd SET STATISTICS PROFILE ON. Kör din fråga i samma session.
--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
Steg 2: Logga in på en andra session som skiljer sig från den session där din fråga körs.
Följande uttalande sammanfattar framstegen som gjorts av den fråga som för närvarande körs i session 54. För att göra detta beräknar den det totala antalet utdatarader från alla trådar för varje nod och jämför det med det uppskattade antalet utdatarader för den noden.
--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;
Se även
Vyer och funktioner för dynamisk hantering (Transact-SQL)
Körningsrelaterade vyer och funktioner för dynamisk hantering (Transact-SQL)