sys.dm_exec_function_stats (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e posterior Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Retorna estatísticas de desempenho agregadas para funções em cache. A exibição retorna uma linha para cada plano de função em cache, e o tempo de vida da linha é o tempo em que a função permanece em cache. Quando uma função é removida do cache, a linha correspondente é eliminada dessa exibição. Nesse momento, é gerado um evento de rastreamento SQL de estatísticas de desempenho semelhante a 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 são alinhadas com Embutimento de UDFs escalares.

No Banco de Dados SQL do Azure, as exibições de gerenciamento dinâmico não podem expor informações que afetariam 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 a cada execução, pois os dados refletem apenas as consultas concluídas, e não as que ainda estão em andamento.

Nome da coluna Tipo de dados Descrição
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 em um pool elástico, mas não em um servidor lógico.
object_id int Número de identificação do objeto da função.
tipo char(2) Tipo do objeto: FN = Funções de valor escalar
type_desc nvarchar(60) Descrição do tipo de objeto: SQL_SCALAR_FUNCTION
sql_handle varbinary(64) Pode ser usado para correlação com consultas em sys.dm_exec_query_stats que foram executadas a partir dessa função.
plan_handle varbinary(64) Identificador do plano na memória. Esse identificador é transitório e permanece constante somente enquanto o plano permanece no cache. Esse valor pode ser usado com a exibição de gerenciamento dinâmico sys.dm_exec_cached_plans.

Será sempre 0x000 quando uma função compilada nativamente consultar uma tabela otimizada para memória.
cached_time datetime Hora em que a função foi adicionada ao cache.
last_execution_time datetime Última vez em que a função foi executada.
execution_count bigint Número de vezes que a função foi executada desde que foi compilada pela última vez.
total_worker_time bigint Quantidade total de tempo de CPU, em microssegundos, que foi consumida pelas execuções dessa função desde que ela foi compilada.

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

Sempre será 0 ao consultar uma tabela com otimização de memória.
last_physical_reads bigint Número de leituras físicas realizadas na última vez em que a função foi executada.

Sempre será 0 ao consultar uma tabela com otimização de memória.
min_physical_reads bigint Número mínimo de leituras físicas que essa função já realizou em uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
max_physical_reads bigint Número máximo de leituras físicas que essa função já realizou em uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
total_logical_writes bigint Número total de gravações lógicas realizadas por execuções dessa função desde que ela foi compilada.

Sempre será 0 ao consultar uma tabela com otimização de memória.
last_logical_writes bigint O número de páginas do pool de buffers que foram sujas na última vez em que o plano foi executado. Se uma página já estiver suja (modificada), nenhuma gravação será contabilizada.

Sempre será 0 ao consultar uma tabela com otimização de memória.
min_logical_writes bigint Número mínimo de gravações lógicas que essa função já realizou em uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
max_logical_writes bigint Número máximo de gravações lógicas que essa função já realizou em uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
total_logical_reads bigint Número total de leituras lógicas realizadas pelas execuções dessa função desde que ela foi compilada.

Sempre será 0 ao consultar uma tabela com otimização de memória.
last_logical_reads bigint Número de leituras lógicas realizadas na última vez em que a função foi executada.

Sempre será 0 ao consultar uma tabela com otimização de memória.
min_logical_reads bigint Número mínimo de leituras lógicas que essa função já realizou em uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
max_logical_reads bigint Número máximo de leituras lógicas que essa função já realizou em uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
total_elapsed_time bigint Tempo total decorrido, em microssegundos, para execuções completas dessa função.
last_elapsed_time bigint Tempo decorrido, em microssegundos, para a execução mais recente dessa função.
min_elapsed_time bigint Tempo mínimo decorrido, em microssegundos, para qualquer execução concluída dessa função.
max_elapsed_time bigint Tempo máximo decorrido, em microssegundos, para qualquer execução concluída dessa função.
total_page_server_reads bigint Número total de leituras do servidor de páginas realizadas pelas execuções dessa função desde que ela foi compilada.

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

Aplica-se a: Banco de dados SQL do Azure em Hiperescala.
min_page_server_reads bigint Número mínimo de leituras do servidor de páginas que essa função já realizou em uma única execução.

Aplica-se a: Banco de dados SQL do Azure em Hiperescala.
max_page_server_reads bigint Número máximo de leituras do servidor de páginas que essa função já realizou em uma única execução.

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

Permissões

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

Nos objetivos de serviço do Banco de Dados SQL Básico, S0 e S1 e para bancos de dados em pools elásticos, é necessário ter a conta do administrador do servidor, a conta do administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader## função de servidor. Em todos os outros objetivos de serviço do Banco de Dados SQL, a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader## são necessárias.

Permissões do SQL Server 2022 e posteriores

É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Exemplos

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;  

Confira também

Funções e exibiçõ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)