sys.dm_exec_procedure_stats (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Returnerar aggregerade prestandastatistik för cachade lagrade procedurer. Vyn returnerar en rad för varje cachelagrad procedurplan, och radens livslängd är så lång som den lagrade proceduren förblir cacvin. När en lagrad projetur tas bort från cachen elimineras motsvarande rad från denna vy. Vid den tidpunkten tas händelsen query_cache_removal_statistics upp på liknande sätt som sys.dm_exec_query_stats för SQL Server och Azure SQL Managed Instance.

I Azure SQL Database kan dynamiska hanteringsvyer inte exponera information som skulle påverka databasens inneslutning eller exponera information om andra databaser som användaren har åtkomst till. För att undvika att exponera den här informationen filtreras varje rad som innehåller data som inte tillhör den anslutna klientorganisationen bort.

Anmärkning

Resultaten av sys.dm_exec_procedure_stats kan variera vid varje körning eftersom datan endast speglar färdiga frågor och inte sådana som fortfarande är under flygning. Om du vill anropa detta från Azure Synapse Analytics eller Analytics Platform System (PDW) använder du namnet sys.dm_pdw_nodes_exec_procedure_stats. Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Kolumnnamn Datatyp Description
database_id int Databas-ID där den lagrade proceduren finns.

I Azure SQL Database är värdena unika i en enskild databas eller en elastisk pool, men inte inom en logisk server.
object_id int Objektidentifieringsnummer för den lagrade proceduren.
type char(2) Föremålets typ:

P = SQL stored procedure

PC = Assembly (CLR) lagrad procedur

X = Utökad lagrad procedur
type_desc nvarchar(60) Beskrivning av objekttypen:

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

EXTENDED_STORED_PROCEDURE
sql_handle varbinary(64) Detta kan användas för att korrelera med frågor i sys.dm_exec_query_stats som utförts från denna lagrade procedur.
plan_handle varbinary(64) Identifierare för den minnesinterna planen. Den här identifieraren är tillfälligt och förblir endast konstant när planen finns kvar i cacheminnet. Det här värdet kan användas med sys.dm_exec_cached_plans dynamisk hanteringsvy.

Kommer alltid att vara 0x000 när en nativt kompilerad lagrad produr frågar en minnesoptimerad tabell.
cached_time datetime Tidpunkt då den lagrade proceduren lades till cachen.
senaste_verkställningstid datetime Senast den lagrade proceduren utfördes.
execution_count bigint Antalet gånger den lagrade proceduren har körts sedan den senast kompilerades.
total_worker_time bigint Den totala mängden CPU-tid, i mikrosekunder, som förbrukats av exekveringar av denna lagrade procedur sedan den kompilerades.

För inbyggt kompilerade lagrade procedurer kan total_worker_time vara opålitliga om många utföranden tar mindre än 1 millisekund.
senaste_arbetstid bigint CPU-tid, i mikrosekunder, som förbrukades sista gången den lagrade proceduren kördes. 1
min_worker_time bigint Den minsta CPU-tiden, i mikrosekunder, som denna lagrade procedur någonsin har förbrukat under en enskild exekvering. 1
max_worker_time bigint Den maximala CPU-tiden, i mikrosekunder, som denna lagrade procedur någonsin har förbrukat under en enskild exekvering. 1
total_physical_reads bigint Det totala antalet fysiska läsningar utförda av exekveringar av denna lagrade procedur sedan den kompilerades.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
last_physical_reads bigint Antalet fysiska läsningar som utfördes senast den lagrade proceduren utfördes.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
min_physical_reads bigint Det minsta antalet fysiska läsningar som denna lagrade procedur någonsin har utfört under en enskild exekvering.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
max_physical_reads bigint Det maximala antalet fysiska läsningar som denna lagrade procedur någonsin har utfört under en enskild exekvering.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
total_logical_writes bigint Det totala antalet logiska skrivningar som utförts av exekveringar av denna lagrade procedur sedan den kompilerades.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
senaste_logiska_skrivningar bigint Antalet buffertpoolsidor som blev smutsiga senast planen genomfördes. Om en sida redan är smutsig (ändrad) räknas inga skrivningar.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
min_logical_writes bigint Det minsta antalet logiska skrivningar som denna lagrade procedur någonsin har utfört under en enskild exekvering.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
max_logical_writes bigint Det maximala antalet logiska skrivningar som denna lagrade procedur någonsin har utfört under en enskild exekvering.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
total_logical_reads (totalt logiska läsningar) bigint Det totala antalet logiska läsningar utförda av exekveringar av denna lagrade procedur sedan den kompilerades.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
last_logical_reads bigint Antalet logiska läsningar som utfördes senast den lagrade proceduren utfördes.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
min_logical_reads bigint Det minsta antalet logiska läsningar som denna lagrade procedur någonsin har utfört under en enskild exekvering.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
max_logical_reads bigint Det maximala antalet logiska läsningar som denna lagrade procedur någonsin har utfört under en enskild exekvering.

Kommer alltid att vara 0 när man frågar en minnesoptimerad tabell.
total_elapsed_time bigint Den totala förflutna tiden, i mikrosekunder, för slutförda exekveringar av denna lagrade procedur.
senaste_förfluten_tid bigint Den förflutna tiden, i mikrosekunder, för den senast genomförda utförandet av denna lagrade procedur.
min_elapsed_time bigint Den minsta förflutna tiden, i mikrosekunder, för varje slutförd exekvering av denna lagrade procedur.
max_tidsmängd bigint Den maximala förflutna tiden, i mikrosekunder, för varje slutförd exekvering av denna lagrade procedur.
total_spills bigint Det totala antalet sidor som spillts vid exekvering av denna lagrade procedur sedan den kompilerades.

Gäller för: Börjar med SQL Server 2017 (14.x) CU3
last_spills bigint Antalet sidor som spilldes senast den lagrade proceduren kördes.

Gäller för: Börjar med SQL Server 2017 (14.x) CU3
min_spills bigint Det minsta antalet sidor som denna lagrade procedur någonsin har spillt under en enda exekvering.

Gäller för: Börjar med SQL Server 2017 (14.x) CU3
max_spills bigint Det maximala antalet sidor som denna lagrade procedur någonsin har spillt under en enda exekvering.

Gäller för: Börjar med SQL Server 2017 (14.x) CU3
pdw_node_id int Identifieraren för noden som den här fördelningen är på.

gäller för: Azure Synapse Analytics, Analytics Platform System (PDW)
total_page_server_reads bigint Det totala antalet sidserverläsningar som utförts av exekveringar av denna lagrade procedur sedan den kompilerades.

Gäller för: Azure SQL Database Hyperscale
last_page_server_reads bigint Antalet sidserverläsningar som utfördes senast den lagrade proceduren kördes.

Gäller för: Azure SQL Database Hyperscale
min_page_server_reads bigint Det minsta antalet sidserverläsningar som denna lagrade procedur någonsin har utfört under en enskild exekvering.

Gäller för: Azure SQL Database Hyperscale
max_page_server_reads bigint Det maximala antalet sidserverläsningar som denna lagrade procedur någonsin har utfört under en enskild exekvering.

Gäller för: Azure SQL Database Hyperscale

1 För nativt kompilerade lagrade procedurer när statistiksamling är aktiverad, samlas arbetarens tid in i millisekunder. Om frågan utförs på mindre än en millisekund blir värdet 0.

Permissions

På SQL Server och SQL Managed Instance kräver VIEW SERVER STATE behörighet.

I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE STATE behörighet för databasen eller medlemskap i ##MS_ServerStateReader## serverrollen.

Behörigheter för SQL Server 2022 och senare

Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.

Anmärkningar

Statistiken i vyn uppdateras när en lagrad procedurexekvering slutförs.

Examples

Följande exempel ger information om de tio vanligaste lagrade procedurerna identifierade efter genomsnittlig förfluten tid.

SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'proc name',   
    d.cached_time, d.last_execution_time, d.total_elapsed_time,  
    d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],  
    d.last_elapsed_time, d.execution_count  
FROM sys.dm_exec_procedure_stats AS d  
ORDER BY [total_worker_time] DESC;  

Se även

Körningsrelaterade vyer och funktioner för dynamisk hantering (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_exec_query_plan (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)