sys.dm_exec_function_stats (Transact-SQL)
Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
Restituisce dati statistici aggregati sulle prestazioni delle funzionalità memorizzate nella cache. La vista restituisce una riga per ogni piano di funzione memorizzato nella cache e la durata della riga è uguale al periodo in cui la funzione rimane memorizzata nella cache. Quando una funzione viene rimossa dalla cache, le righe corrispondenti vengono eliminate dalla vista. In quel momento, viene generato un evento di Analisi SQL delle statistiche delle prestazioni simile a sys.dm_exec_query_stats. Restituisce informazioni sulle funzioni scalari, incluse le funzioni in memoria e le funzioni scalari CLR. Non restituisce informazioni sulle funzioni con valori di tabella e sulle funzioni scalari incorporate con Scalar UDF Inlining.
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_function_stats possono variare con ogni esecuzione, perché i dati riflettono solo le query completate e non quelle ancora in esecuzione.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
database_id | int | ID del database in cui è contenuta la funzione. 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 funzione. |
type | char(2) | Tipo dell'oggetto: FN = Funzioni a valori scalari |
type_desc | nvarchar(60) | Descrizione del tipo di oggetto: SQL_SCALAR_FUNCTION |
sql_handle | varbinary(64) | Può essere usato per correlare con le query in sys.dm_exec_query_stats eseguite dall'interno di questa funzione. |
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 funzione compilata in modo nativo esegue una query su una tabella ottimizzata per la memoria. |
cached_time | datetime | Orario in cui la funzione è stata aggiunta alla cache. |
last_execution_time | datetime | Orario dell'ultima esecuzione della funzione. |
execution_count | bigint | Numero di esecuzioni della funzione a partire dall'ultima compilazione. |
total_worker_time | bigint | Quantità totale di tempo CPU, in microsecondi, consumata dalle esecuzioni di questa funzione da quando è stata compilata. Per le funzioni 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 funzione. 1 |
min_worker_time | bigint | Tempo minimo CPU, in microsecondi, che questa funzione ha mai utilizzato durante una singola esecuzione. 1 |
max_worker_time | bigint | Tempo massimo CPU, in microsecondi, che questa funzione ha mai utilizzato durante una singola esecuzione. 1 |
total_physical_reads | bigint | Numero totale di letture fisiche effettuate dalle esecuzioni della funzione a partire dalla relativa compilazione. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
last_physical_reads | bigint | Numero di letture fisiche eseguite durante l'ultima esecuzione della funzione. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
min_physical_reads | bigint | Numero minimo di letture fisiche effettuate dalla funzione 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 effettuate dalla funzione 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 effettuate dalle esecuzioni della funzione a partire dalla relativa compilazione. È sempre 0 con esecuzione di query su una tabella ottimizzata 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 ottimizzata per la memoria. |
min_logical_writes | bigint | Numero minimo di scritture logiche effettuate dalla funzione 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 effettuate dalla funzione 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 effettuate dalle esecuzioni della funzione a partire dalla sua compilazione. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
last_logical_reads | bigint | Numero di letture logiche effettuate durante l'ultima esecuzione della funzione. È sempre 0 con esecuzione di query su una tabella ottimizzata per la memoria. |
min_logical_reads | bigint | Numero minimo di letture logiche effettuate dalla funzione 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 effettuate dalla funzione 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 funzione. |
last_elapsed_time | bigint | Tempo trascorso, in microsecondi, per l'ultima esecuzione completata della funzione. |
min_elapsed_time | bigint | Tempo trascorso minimo, in microsecondi, per le esecuzioni completate di questa funzione. |
max_elapsed_time | bigint | Tempo trascorso massimo, in microsecondi, per le esecuzioni completate di questa funzione. |
total_page_server_reads | bigint | Numero totale di letture del server di pagina eseguite dalle esecuzioni di questa funzione da quando è stata compilata. Si applica a: Hyperscale database SQL di Azure. |
last_page_server_reads | bigint | Numero di letture del server di pagina effettuate durante l'ultima esecuzione della funzione. Si applica a: Hyperscale database SQL di Azure. |
min_page_server_reads | bigint | Numero minimo di letture del server di pagina effettuate dalla funzione durante una singola esecuzione. Si applica a: Hyperscale database SQL di Azure. |
max_page_server_reads | bigint | Numero massimo di letture del server di pagina effettuate dalla funzione durante una singola esecuzione. Si applica a: Hyperscale database SQL di Azure. |
Autorizzazioni
In SQL Server e Istanza gestita di SQL è richiesta l'autorizzazione VIEW SERVER STATE
.
Negli obiettivi del servizio Basic del Database SQL, S0 e S1 e per i database nei pool elastici, è richiesto l'account amministratore del server, l'account amministratore di Microsoft Entra o l’adesione nel ##MS_ServerStateReader##
al ruolo del 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.
Esempi
Nell'esempio seguente vengono restituite informazioni sulle prime dieci funzioni identificate in base al tempo medio trascorso.
SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'function 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_function_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_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_procedure_stats (Transact-SQL)