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)