sys.dm_exec_procedure_stats (Transact-SQL)
Si applica a: SQL Server
database SQL di Azure
Istanza gestita di SQL di Azure
azure Synapse Analytics Analytics
Platform System (PDW)
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. In quel momento, l'evento query_cache_removal_statistics
viene generato in modo simile a sys.dm_exec_query_stats per SQL Server e Istanza gestita di SQL di Azure.
Nel 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, ogni riga contenente dati che non appartengono al tenant connesso viene filtrata.
Nota
I risultati di sys.dm_exec_procedure_stats possono variare con ogni esecuzione perché i dati riflettono solo le query completate e non quelle ancora in esecuzione.
Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (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. In database SQL di Azure i valori sono univoci all'interno di un database singolo o di un pool elastico, ma non all'interno di un server logico. |
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 con le query in sys.dm_exec_query_stats eseguite dall'interno di questa 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 visualizzazione a gestione dinamica (DMV). È 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 la stored procedure è stata eseguita dall'ultima compilazione. |
total_worker_time | bigint | Quantità totale di tempo cpu, in microsecondi, utilizzata dalle esecuzioni di questa stored procedure da quando è stata compilata. 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 minimo cpu, 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 letture fisiche eseguite dalle esecuzioni di questa stored procedure dopo la compilazione. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
last_physical_reads | bigint | Numero di letture fisiche eseguite l'ultima volta che è stata eseguita la stored procedure. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
min_physical_reads | bigint | Numero minimo di letture fisiche eseguite da questa 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 letture fisiche eseguite da questa 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 questa stored procedure dopo la 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 interrotte l'ultima volta che il piano è stato eseguito. 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 eseguite da questa stored procedure 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 eseguite da questa stored procedure durante una singola esecuzione. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
total_logical_reads | bigint | Numero totale di letture logiche eseguite dalle esecuzioni di questa stored procedure dopo la compilazione. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
last_logical_reads | bigint | Numero di letture logiche eseguite l'ultima volta che è stata eseguita la stored procedure. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
min_logical_reads | bigint | Numero minimo di letture logiche eseguite da questa 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 letture logiche eseguite da questa stored procedure durante una singola esecuzione. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
total_elapsed_time | bigint | Tempo trascorso totale, in microsecondi, per le esecuzioni completate di questa stored procedure. |
last_elapsed_time | bigint | Tempo trascorso, in microsecondi, per l'esecuzione completata più di recente di questa stored procedure. |
min_elapsed_time | bigint | Tempo minimo trascorso, in microsecondi, per qualsiasi esecuzione completata di questa stored procedure. |
max_elapsed_time | bigint | Tempo massimo trascorso, in microsecondi, per qualsiasi esecuzione completata di questa stored procedure. |
total_spills | bigint | Numero totale di pagine distribuite dall'esecuzione di questa stored procedure dopo la compilazione. Si applica a: a partire da SQL Server 2017 (14.x) CU3 |
last_spills | bigint | Numero di pagine distribuite l'ultima volta che è stata eseguita la stored procedure. 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 sversato 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 interrotto durante una singola esecuzione. Si applica a: a partire da SQL Server 2017 (14.x) CU3 |
pdw_node_id | int | Identificatore del nodo in cui è attiva la distribuzione. Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW) |
total_page_server_reads | bigint | Numero totale di letture del server di pagine eseguite dalle esecuzioni di questa stored procedure dopo la compilazione. Si applica a: database SQL di Azure Hyperscale |
last_page_server_reads | bigint | Numero di letture del server di pagine eseguite l'ultima volta che è stata eseguita la stored procedure. Si applica a: database SQL di Azure Hyperscale |
min_page_server_reads | bigint | Il numero minimo di server di pagine legge che questa stored procedure ha mai eseguito durante una singola esecuzione. Si applica a: database SQL di Azure Hyperscale |
max_page_server_reads | bigint | Il numero massimo di server di pagine legge che questa stored procedure ha mai eseguito 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 Istanza gestita di SQL è richiesta l'autorizzazione VIEW SERVER STATE
.
In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader##
server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE
per il database o l'adesione ruolo del server ##MS_ServerStateReader##
.
Autorizzazioni per SQL Server 2022 e versioni successive
È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il server.
Osservazioni:
Le statistiche nella vista vengono aggiornate quando viene completata l'esecuzione della stored procedure.
Esempi
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;
Vedi anche
Funzioni e viste a gestione dinamica relative 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)