sys.dm_exec_procedure_stats (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

Restituisce dati statistici aggregati sulle prestazioni delle stored procedure memorizzate nella cache. La vista restituisce una riga per ogni piano di stored procedure memorizzato nella cache e la durata della riga è uguale al periodo in cui la stored procedure rimane memorizzata nella cache. Quando una stored procedure viene rimossa dalla cache, la riga corrispondente viene elimina dalla vista. A questo punto, viene generato un evento di traccia SQL di Performance Statistics simile a sys.dm_exec_query_stats.

In database SQL di Azure, le viste a gestione dinamica non possono esporre le informazioni che influenzerebbero l'indipendenza del database o le informazioni sugli altri database a cui l'utente dispone di accesso. Per evitare di esporre queste informazioni, viene filtrata ogni riga che contiene dati che non appartengono al tenant connesso.

Nota

I risultati delle sys.dm_exec_procedure_stats possono variare a seconda dell'esecuzione, in quanto i dati riflettono solo le query completate e non quelle ancora in esecuzione. Per chiamare il metodo da Azure Synapse Analytics o Piattaforma di strumenti analitici (PDW), usare il nome sys.dm_pdw_nodes_exec_procedure_stats. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Nome colonna Tipo di dati Descrizione
database_id int ID del database in cui è contenuta la stored procedure.
object_id int Numero di identificazione dell'oggetto della stored procedure.
type char(2) Tipo dell'oggetto:

P = stored procedure SQL

PC = stored procedure assembly (CLR)

X = stored procedure estesa
type_desc nvarchar(60) Descrizione del tipo di oggetto:

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

EXTENDED_STORED_PROCEDURE
sql_handle varbinary(64) Può essere usato per correlare le query in sys.dm_exec_query_stats eseguite dall'interno di questo stored procedure.
plan_handle varbinary(64) Identificatore del piano in memoria. Si tratta di un identificatore temporaneo, che rimane costante solo se il piano rimane nella cache. Questo valore può essere usato con la sys.dm_exec_cached_plans a gestione dinamica.

È sempre 0x000 quando una stored procedure compilata in modo nativo esegue una query su una tabella ottimizzata per la memoria.
cached_time datetime Ora in cui la stored procedure è stata aggiunta alla cache.
last_execution_time datetime Ora dell'ultima esecuzione della stored procedure.
execution_count bigint Numero di volte in cui il stored procedure è stato eseguito dall'ultima compilazione.
total_worker_time bigint Quantità totale di tempo cpu, in microsecondi, utilizzata dalle esecuzioni di questo stored procedure dalla compilazione.

Per le stored procedure compilate in modo nativo, il valore di total_worker_time non può essere accurato se più esecuzioni richiedono meno di 1 millisecondo.
last_worker_time bigint Tempo di CPU, in microsecondi, utilizzato durante l'ultima esecuzione della stored procedure. 1
min_worker_time bigint Tempo cpu minimo, in microsecondi, che questa stored procedure ha mai utilizzato durante una singola esecuzione. 1
max_worker_time bigint Tempo massimo di CPU, in microsecondi, che questa stored procedure ha mai utilizzato durante una singola esecuzione. 1
total_physical_reads bigint Numero totale di operazioni di lettura fisiche eseguite dalle esecuzioni di questo stored procedure dalla compilazione.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
last_physical_reads bigint Numero di operazioni di lettura fisiche eseguite l'ultima stored procedure eseguita.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
min_physical_reads bigint Numero minimo di operazioni di lettura fisiche eseguite stored procedure durante una singola esecuzione.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
max_physical_reads bigint Numero massimo di operazioni di lettura fisiche eseguite stored procedure durante una singola esecuzione.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
total_logical_writes bigint Numero totale di scritture logiche eseguite dalle esecuzioni di questo stored procedure dalla compilazione.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
last_logical_writes bigint Numero di pagine del pool di buffer non visualizzate l'ultima volta che è stato eseguito il piano. Se una pagina è già dirty (modificata) le scritture non vengono conteggiate.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
min_logical_writes bigint Numero minimo di scritture logiche che questa stored procedure ha mai eseguito durante una singola esecuzione.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
max_logical_writes bigint Numero massimo di scritture logiche che questa stored procedure ha mai eseguito durante una singola esecuzione.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
total_logical_reads bigint Numero totale di operazioni di lettura logiche eseguite dalle esecuzioni di questo stored procedure dalla compilazione.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
last_logical_reads bigint Numero di operazioni di lettura logiche eseguite l'ultima stored procedure è stata eseguita.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
min_logical_reads bigint Numero minimo di operazioni di lettura logiche eseguite stored procedure durante una singola esecuzione.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
max_logical_reads bigint Numero massimo di operazioni di lettura logiche eseguite stored procedure durante una singola esecuzione.

È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria.
total_elapsed_time bigint Tempo totale trascorso, in microsecondi, per le esecuzioni completate di questo stored procedure.
last_elapsed_time bigint Tempo trascorso, in microsecondi, per l'ultima esecuzione completata di questo stored procedure.
min_elapsed_time bigint Tempo minimo trascorso, in microsecondi, per qualsiasi esecuzione completata di questo stored procedure.
max_elapsed_time bigint Tempo massimo trascorso, in microsecondi, per qualsiasi esecuzione completata di questo stored procedure.
total_spills bigint Numero totale di pagine versate dall'esecuzione di questo stored procedure dalla compilazione.

Si applica a: a partire da SQL Server 2017 (14.x) CU3
last_spills bigint Numero di pagine che si sono rovesciate l'ultima stored procedure è stata eseguita.

Si applica a: a partire da SQL Server 2017 (14.x) CU3
min_spills bigint Numero minimo di pagine che questa stored procedure ha mai versato durante una singola esecuzione.

Si applica a: a partire da SQL Server 2017 (14.x) CU3
max_spills bigint Numero massimo di pagine che questa stored procedure ha mai versato durante una singola esecuzione.

Si applica a: a partire da SQL Server 2017 (14.x) CU3
pdw_node_id int Identificatore del nodo su cui si trova la distribuzione.

Si applica a: Azure Synapse Analytics, Piattaforma di strumenti analitici (PDW)
total_page_server_reads bigint Numero totale di operazioni di lettura del server di pagine eseguite dalle esecuzioni di questo stored procedure dalla compilazione.

Si applica a: database SQL di Azure Hyperscale
last_page_server_reads bigint Numero di operazioni di lettura del server di pagine eseguite l'ultima stored procedure è stata eseguita.

Si applica a: database SQL di Azure Hyperscale
min_page_server_reads bigint Numero minimo di operazioni di lettura del server di pagine eseguite stored procedure durante una singola esecuzione.

Si applica a: database SQL di Azure Hyperscale
max_page_server_reads bigint Numero massimo di operazioni di lettura del server di pagine eseguite stored procedure durante una singola esecuzione.

Si applica a: database SQL di Azure Hyperscale

1 Per le stored procedure compilate in modo nativo quando la raccolta di statistiche è abilitata, il tempo di lavoro viene raccolto in millisecondi. Se la query viene eseguita in meno di un millisecondo, il valore sarà 0.

Autorizzazioni

In SQL Server e in SQL Istanza gestita richiede l'autorizzazione VIEW SERVER STATE .

Negli database SQL di servizio Basic, S0 e S1 e per i database nei pool elastici è necessario l'account amministratore del server, l'account ##MS_ServerStateReader## amministratore di Azure Active Directory o l'appartenenza al ruolo del server. In tutti gli database SQL obiettivi di servizio è necessaria l'autorizzazione VIEW DATABASE STATE per il database o l'appartenenza al ##MS_ServerStateReader## ruolo del server.

Commenti

Le statistiche nella vista vengono aggiornate quando viene completata l'esecuzione della stored procedure.

Esempio

Nell'esempio seguente vengono restituite informazioni sulle prime dieci stored procedure identificate in base al tempo medio trascorso.

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;  

Vedere anche

Funzioni e viste a gestione dinamica correlate all'esecuzione (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)