Partilhar via


sys.dm_exec_function_stats (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

Retorna estatísticas de desempenho agregadas para funções armazenadas em cache. A visão retorna uma linha para cada plano de função armazenado em cache, e o tempo de vida da linha é enquanto a função permanecer em cache. Quando uma função é removida do cache, a linha correspondente é eliminada dessa exibição. Nesse momento, um evento de rastreamento SQL do Performance Statistics é gerado semelhante ao sys.dm_exec_query_stats. Retorna informações sobre funções escalares, incluindo funções na memória e funções escalares CLR. Não retorna informações sobre funções com valor de tabela e sobre funções escalares que estão embutidas com Scalar UDF Inlining.

No Banco de Dados SQL do Azure, as exibições de gerenciamento dinâmico não podem expor informações que possam afetar a contenção do banco de dados ou expor informações sobre outros bancos de dados aos quais o usuário tem acesso. Para evitar a exposição dessas informações, todas as linhas que contêm dados que não pertencem ao locatário conectado são filtradas.

Observação

Os resultados de sys.dm_exec_function_stats podem variar com cada execução, pois os dados refletem apenas consultas concluídas, e não aquelas ainda em andamento.

Nome da coluna Tipo de dados Description
database_id int ID do banco de dados no qual a função reside.

No Banco de Dados SQL do Azure, os valores são exclusivos em um único banco de dados ou pool elástico, mas não em um servidor lógico.
object_id int Número de identificação do objeto da função.
type char(2) Tipo do objeto: FN = Funções com valor escalar
type_desc Nvarchar(60) Descrição do tipo de objeto: SQL_SCALAR_FUNCTION
sql_handle varbinary(64) Isso pode ser usado para correlacionar com consultas em sys.dm_exec_query_stats que foram executadas de dentro dessa função.
plan_handle varbinary(64) Identificador do plano na memória. Esse identificador é transitório e permanece constante apenas enquanto o plano permanece no cache. Esse valor pode ser usado com a sys.dm_exec_cached_plans visualização de gerenciamento dinâmico.

Será sempre 0x000 quando uma função compilada nativamente consulta uma tabela com otimização de memória.
cached_time datetime Hora em que a função foi adicionada ao cache.
hora_da_última_execução datetime Última vez em que a função foi executada.
execution_count bigint Número de vezes que a função foi executada desde a última compilação.
total_worker_time bigint Quantidade total de tempo de CPU, em microssegundos, que foi consumido pelas execuções desta função desde que foi compilada.

Para funções compiladas nativamente, total_worker_time pode não ser preciso se muitas execuções levarem menos de 1 milissegundo.
last_worker_time bigint Tempo da CPU, em microssegundos, que foi consumido na última vez que a função foi executada. 1
min_worker_time bigint Tempo mínimo de CPU, em microssegundos, que esta função já consumiu durante uma única execução. 1
max_worker_time bigint Tempo máximo de CPU, em microssegundos, que esta função já consumiu durante uma única execução. 1
total_physical_reads bigint Número total de leituras físicas realizadas por execuções desta função desde que foi compilada.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
last_physical_reads bigint Número de leituras físicas realizadas na última vez que a função foi executada.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
min_physical_reads bigint Número mínimo de leituras físicas que esta função já executou durante uma única execução.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
max_physical_reads bigint Número máximo de leituras físicas que esta função já executou durante uma única execução.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
total_logical_writes bigint Número total de gravações lógicas realizadas por execuções desta função desde que foi compilada.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
last_logical_writes bigint Número do número de páginas do buffer pool sujas na última vez que o plano foi executado. Se uma página já estiver suja (modificada), nenhuma gravação será contada.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
min_logical_writes bigint Número mínimo de gravações lógicas que esta função já executou durante uma única execução.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
max_logical_writes bigint Número máximo de gravações lógicas que esta função já executou durante uma única execução.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
total_logical_reads bigint Número total de leituras lógicas realizadas por execuções desta função desde que foi compilada.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
últimas_leituras_lógicas bigint Número de leituras lógicas executadas na última vez que a função foi executada.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
min_logical_reads bigint Número mínimo de leituras lógicas que esta função já executou durante uma única execução.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
max_logical_reads bigint Número máximo de leituras lógicas que esta função já executou durante uma única execução.

Será sempre 0 ao consultar uma tabela otimizada para a memória.
total_elapsed_time bigint Tempo total decorrido, em microssegundos, para execuções concluídas desta função.
tempo_decorrido_último bigint Tempo decorrido, em microssegundos, para a execução concluída mais recentemente desta função.
min_elapsed_time bigint Tempo mínimo decorrido, em microssegundos, para qualquer execução concluída desta função.
max_elapsed_time bigint Tempo máximo decorrido, em microssegundos, para qualquer execução concluída desta função.
total_page_server_reads bigint Número total de leituras do servidor de página realizadas pelas execuções desta função desde que foi compilada.

Aplica-se a: Hiperescala do Banco de Dados SQL do Azure.
last_page_server_reads bigint Número de leituras do servidor de página executadas na última vez que a função foi executada.

Aplica-se a: Hiperescala do Banco de Dados SQL do Azure.
min_page_server_reads bigint Número mínimo de leituras do servidor de página que esta função já executou durante uma única execução.

Aplica-se a: Hiperescala do Banco de Dados SQL do Azure.
max_page_server_reads bigint O número máximo de leituras do servidor de página que essa função já executou durante uma única execução.

Aplica-se a: Hiperescala do Banco de Dados SQL do Azure.

Permissions

No SQL Server e na Instância Gerenciada do SQL, requer VIEW SERVER STATE permissão.

No Banco de Dados SQL Basic, S0e S1 objetivos de serviço e para bancos de dados em pools elásticos , a conta de de administrador do servidor, a conta de de administrador do Microsoft Entra ou a associação aode função de servidor ##MS_ServerStateReader## é necessária. Em todos os outros objetivos de serviço do Banco de dados SQL, é necessária a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Examples

O exemplo a seguir retorna informações sobre as dez principais funções identificadas pelo tempo médio decorrido.

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;  

Ver também

Visualizações e funções de gerenciamento dinâmico relacionadas à execução (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)