Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Monitort de voortgang van realtime query's terwijl de query wordt uitgevoerd. Gebruik bijvoorbeeld deze DMV om te bepalen welk deel van de query traag draait. Voeg deze DMV aan met andere systeem-DMV's via de kolommen die in het beschrijvingsveld zijn geïdentificeerd. Of voeg deze DMV samen met andere prestatietellers (zoals Performance Monitor, xperf) door gebruik te maken van de tijdstempelkolommen.
Tabel geretourneerd
De teruggegeven tellers zijn per operator per thread. De resultaten zijn dynamisch en komen niet overeen met de resultaten van bestaande opties, zoals SET STATISTICS XML ON die alleen output genereren wanneer de query is voltooid.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| sessie-id | smallint | Identificeert de sessie waarin deze query draait. Referenties dm_exec_sessions.session_id. |
| request_id | int | Identificeert het doelverzoek. Referenties dm_exec_sessions.request_id. |
| sql_handle | varbinary(64) | Is een token dat uniek de batch of opgeslagen procedure identificeert waarvan de query deel uitmaakt. Referenties dm_exec_query_stats.sql_handle. |
| plan_handle | varbinary(64) | Is een token dat uniek een query-uitvoeringsplan identificeert voor een batch die is uitgevoerd en waarvan het plan zich in de plancache bevindt, of momenteel uitvoert. Referenties dm_exec_query_stats.plan_handle. |
| physical_operator_name | nvarchar(256) | Naam van de fysieke operator. |
| node_id | int | Identificeert een operatorknoop in de queryboom. |
| thread_id | int | Onderscheidt de threads (voor een parallelle query) die tot dezelfde query-operator node behoren. |
| taak_adres | varbinary(8) | Identificeert de SQLOS-taak die deze thread gebruikt. Referenties dm_os_tasks.task_address. |
| row_count | bigint | Aantal rijen tot nu toe door de operator teruggegeven. |
| rewind_count | bigint | Aantal terugspoelbewegingen tot nu toe. |
| rebind_count | bigint | Aantal herbindingen tot nu toe. |
| end_of_scan_count | bigint | Aantal eindscans tot nu toe. |
| estimate_row_count | bigint | Geschat aantal rijen. Het kan nuttig zijn om estimated_row_count te vergelijken met de daadwerkelijke row_count. |
| first_active_time | bigint | De tijd, in milliseconden, toen de operator voor het eerst werd gebeld. |
| last_active_time | bigint | De tijd, in milliseconden, wanneer de operator voor het laatst werd gebeld. |
| open_time | bigint | Tijdstempel wanneer open (in milliseconden). |
| first_row_time | bigint | Tijdstempel wanneer de eerste rij werd geopend (in milliseconden). |
| last_row_time | bigint | Tijdstempel wanneer de laatste rij werd geopend (in milliseconden). |
| close_time | bigint | Tijdstempel als je dichtbij bent (in milliseconden). |
| elapsed_time_ms | bigint | De totale verstreken tijd (in milliseconden) die tot nu toe door de operaties van de doelknoop is gebruikt. |
| cpu_time_ms | bigint | Totale CPU-tijd (in milliseconden) tot nu toe door de operaties van de doelnode gebruikt. |
| database_id | smallint | ID van de database die het object bevat waarop de reads en writes worden uitgevoerd. |
| object_id | int | De identificatie voor het object waarop de lees- en schrijfacties worden uitgevoerd. Referenties sys.objects.object_id. |
| index_id | int | De index (indien aanwezig) waartegen de rijset wordt geopend. |
| scan_count | bigint | Aantal tabel-/indexscans tot nu toe. |
| logical_read_count | bigint | Aantal logische lezingen tot nu toe. |
| physical_read_count | bigint | Aantal fysieke lezingen tot nu toe. |
| read_ahead_count | bigint | Aantal leesvoorlezen tot nu toe. |
| write_page_count | bigint | Aantal pagina-schrijfopdrachten tot nu toe door overgeslagen pagina's. |
| lob_logical_read_count | bigint | Aantal LOB-logische lezingen tot nu toe. |
| lob_physical_read_count | bigint | Aantal fysieke lezingen van LOB tot nu toe. |
| lob_read_ahead_count | bigint | Aantal LOB-voorlezen tot nu toe. |
| segment_read_count | int | Aantal segment-readheads tot nu toe. |
| segment_skip_count | int | Aantal segmenten tot nu toe overgeslagen. |
| actual_read_row_count | bigint | Aantal rijen dat door een operator werd gelezen voordat het residuele predicaat werd toegepast. |
| estimated_read_row_count | bigint |
Van toepassing op: Beginnend met SQL Server 2016 (13.x) SP1. Aantal rijen dat door een operator werd geschat voordat het residuele predicaat werd toegepast. |
Algemene opmerkingen
Als de queryplan-node geen I/O heeft, worden alle I/O-gerelateerde tellers op NULL gezet.
De I/O-gerelateerde tellers die door deze DMV worden gerapporteerd, zijn gedetailleerder dan de tellers die door deze op SET STATISTICS IO de volgende twee manieren worden gerapporteerd:
SET STATISTICS IOgroepeert de tellers voor alle I/O naar een gegeven tabel. Met deze DMV krijg je aparte tellers voor elke node in het queryplan die I/O naar de tabel uitvoert.Als er een parallelle scan is, rapporteert deze DMV tellers voor elk van de parallelle threads die aan de scan werken.
Vanaf SQL Server 2016 (13.x) SP1 bestaat de standaard query execution statistics profiling infrastructure naast een lichtgewicht query execution statistics profiling infrastructure.
SET STATISTICS XML ON en SET STATISTICS PROFILE ON gebruik altijd de standaard infrastructuur voor het profileren van query-uitvoeringsstatistieken. Om sys.dm_exec_query_profiles ingevuld te worden, moet een van de queryprofielinfrastructuren ingeschakeld zijn. Voor meer informatie, zie Infrastructuur voor queryprofilering.
Opmerking
De te onderzoeken query moet starten nadat de queryprofielinfrastructuur is ingeschakeld; het inschakelen ervan nadat de query is gestart zal geen resultaten opleveren in sys.dm_exec_query_profiles. Voor meer informatie over hoe je de queryprofielinfrastructuren kunt inschakelen, zie Query Profiling Infrastructure.
Permissions
- Op SQL Server en Azure SQL Managed Instance vereist
VIEW DATABASE STATEtoestemming en lidmaatschap van dedb_ownerdatabaserol. - Op Azure SQL Database Premium Tiers vereist de
VIEW DATABASE STATEtoestemming in de database. - Op Azure SQL Database Basic, S0 en S1 servicedoelstellingen, en voor databases in elastic pools, is het serverbeheeraccount of het Microsoft Entra-beheerdersaccount vereist. Voor alle andere doelstellingen van SQL Database-diensten is de
VIEW DATABASE STATEtoestemming vereist in de database.
Machtigingen voor SQL Server 2022 en hoger
Hiervoor is de machtiging VIEW DATABASE PERFORMANCE STATE vereist voor de database.
Voorbeelden
Stap 1: Log in op een sessie waarin je van plan bent de query uit te voeren waarmee sys.dm_exec_query_profilesje gaat analyseren. Om de query voor profilering te configureren, gebruik SET STATISTICS PROFILE ON. Voer je query in dezezelfde sessie uit.
--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
Stap 2: Log in op een tweede sessie die anders is dan de sessie waarin je query draait.
De volgende verklaring vat de voortgang samen die de query die momenteel draait in sessie 54 is geboekt. Om dit te doen, berekent het het totale aantal uitvoerrijen van alle threads voor elke knoop en vergelijkt dit met het geschatte aantal uitvoerrijen voor die knoop.
--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;
Zie ook
dynamische beheerweergaven en -functies (Transact-SQL)
uitvoeringsgerelateerde dynamische beheerweergaven en -functies (Transact-SQL)