sys.dm_exec_procedure_stats (Transact-SQL)
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 Statistiche recenti sulle prestazioni di Traccia SQL analogo a sys.dm_exec_query_stats.
In Database SQL di Windows 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 che contiene dati che non appartengono al tenant connesso viene esclusa tramite filtro.
Nota
Se sul server è attualmente in esecuzione un carico di lavoro, è possibile che una query iniziale di sys.dm_exec_procedure_stats generi risultati non accurati.La riesecuzione della query può garantire risultati più accurati.
Si applica a: SQL Server (da SQL Server 2008 alla versione corrente), Database SQL di Windows Azure (dalla versione iniziale alla versione corrente). |
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 utilizzato per la corrispondenza con le query in sys.dm_exec_query_stats eseguite dall'interno della 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 utilizzato con la DMV sys.dm_exec_cached_plans. È sempre 0x000 quando una stored procedure compilata in modo nativo esegue una query su una tabella con ottimizzazione 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 esecuzioni della stored procedure a partire dall'ultima compilazione. |
total_worker_time |
bigint |
Quantità totale di tempo di CPU, in microsecondi, utilizzato dalle esecuzioni della stored procedure a partire dalla relativa 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 minimo di CPU, in microsecondi, utilizzato dalla stored procedure durante una singola esecuzione. 1 |
max_worker_time |
bigint |
Tempo massimo di CPU, in microsecondi, utilizzato dalla stored procedure durante una singola esecuzione. 1 |
total_physical_reads |
bigint |
Numero totale di letture fisiche effettuate dalle esecuzioni della stored procedure a partire dalla relativa compilazione. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
last_physical_reads |
bigint |
Numero di letture fisiche effettuate durante l'ultima esecuzione della stored procedure. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
min_physical_reads |
bigint |
Numero minimo di letture fisiche effettuate dalla stored procedure durante una singola esecuzione. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
max_physical_reads |
bigint |
Numero massimo di letture fisiche effettuate dalla stored procedure durante una singola esecuzione. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
total_logical_writes |
bigint |
Numero totale di scritture logiche effettuate dalle esecuzioni della stored procedure a partire dalla relativa compilazione. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
last_logical_writes |
bigint |
Numero del numero di pagine del pool di buffer diventate dirty durante l'ultima esecuzione del piano. Se una pagina è già dirty (modificata) le scritture non vengono conteggiate. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
min_logical_writes |
bigint |
Numero minimo di scritture logiche effettuate dalla stored procedure durante una singola esecuzione. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
max_logical_writes |
bigint |
Numero massimo di scritture logiche effettuate dalla stored procedure durante una singola esecuzione. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
total_logical_reads |
bigint |
Numero totale di letture logiche effettuate dalle esecuzioni della stored procedure a partire dalla relativa compilazione. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
last_logical_reads |
bigint |
Numero di letture logiche effettuate durante l'ultima esecuzione della stored procedure. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
min_logical_reads |
bigint |
Numero minimo di letture logiche effettuate dalla stored procedure durante una singola esecuzione. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
max_logical_reads |
bigint |
Numero massimo di letture logiche effettuate dalla stored procedure durante una singola esecuzione. È sempre 0 con esecuzione di query su una tabella con ottimizzazione per la memoria. |
total_elapsed_time |
bigint |
Tempo totale trascorso, in microsecondi, per le esecuzioni complete della stored procedure. |
last_elapsed_time |
bigint |
Tempo trascorso, in microsecondi, per l'ultima esecuzione completata delle stored procedure. |
min_elapsed_time |
bigint |
Tempo minimo trascorso, in microsecondi, per qualsiasi esecuzione completata della stored procedure. |
max_elapsed_time |
bigint |
Tempo massimo trascorso, in microsecondi, per qualsiasi esecuzione completata della stored procedure. |
1 Quando la raccolta delle statistiche è abilitata, per le stored procedure compilate in modo nativo il tempo del processo viene raccolto in millisecondi. Se la query viene eseguita in meno di un millisecondo, il valore sarà 0.
Autorizzazioni
È richiesta l'autorizzazione VIEW SERVER STATE nel 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;
Vedere anche
Riferimento
Funzioni e viste a gestione dinamica relative all'esecuzione (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)