Partilhar via


sys.dm_exec_procedure_stats (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Retorna estatísticas de desempenho de agregação para procedimentos armazenados em cache. A exibição retorna uma linha para cada plano de procedimento armazenado, e o tempo de vida da linha é igual ao tempo em que o procedimento armazenado permanece em cache. Quando um procedimento armazenado é removido do cache, a linha correspondente é eliminada da exibição. Nesse momento, o query_cache_removal_statistics evento é gerado de forma semelhante ao sys.dm_exec_query_stats para SQL Server e Instância Gerenciada de SQL do Azure.

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_procedure_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. Para chamar isso do Azure Synapse Analytics ou do PDW (Analytics Platform System), use o nome sys.dm_pdw_nodes_exec_procedure_stats. Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Nome da coluna Tipo de dados Descrição
database_id int ID do banco de dados no qual o procedimento armazenado 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 de objeto do procedimento armazenado.
tipo char(2) Tipo do objeto:

P = Procedimento armazenado SQL

PC = Procedimento armazenado de assembly (CLR)

X = Procedimento armazenado estendido
type_desc nvarchar(60) Descrição do tipo de objeto:

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

EXTENDED_STORED_PROCEDURE
sql_handle varbinary(64) Isso pode ser usado para correlacionar com consultas em sys.dm_exec_query_stats que foram executadas de dentro desse procedimento armazenado.
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.

Sempre será 0x000 quando um procedimento armazenado compilado nativamente consultar uma tabela com otimização de memória.
cached_time datetime Hora em que o procedimento armazenado foi adicionado ao cache.
last_execution_time datetime Hora em que o procedimento armazenado foi executado pela última vez.
execution_count bigint O número de vezes que o procedimento armazenado foi executado desde a última compilação.
total_worker_time bigint A quantidade total de tempo de CPU, em microssegundos, que foi consumida pelas execuções desse procedimento armazenado desde que ele foi compilado.

Para procedimentos armazenados compilados de modo nativo, o total_worker_time pode não ser preciso se várias execuções levarem menos de 1 milissegundo.
last_worker_time bigint Tempo de CPU, em microssegundos, consumido na última vez em que o procedimento armazenado foi executado. 1
min_worker_time bigint O tempo mínimo de CPU, em microssegundos, que esse procedimento armazenado já consumiu durante uma única execução. 1
max_worker_time bigint O tempo máximo de CPU, em microssegundos, que esse procedimento armazenado já consumiu durante uma única execução. 1
total_physical_reads bigint O número total de leituras físicas executadas por execuções desse procedimento armazenado desde que ele foi compilado.

Sempre será 0 ao consultar uma tabela com otimização de memória.
last_physical_reads bigint O número de leituras físicas executadas na última vez que o procedimento armazenado foi executado.

Sempre será 0 ao consultar uma tabela com otimização de memória.
min_physical_reads bigint O número mínimo de leituras físicas que esse procedimento armazenado já executou durante uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
max_physical_reads bigint O número máximo de leituras físicas que esse procedimento armazenado já executou durante uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
total_logical_writes bigint O número total de gravações lógicas executadas por execuções desse procedimento armazenado desde que ele foi compilado.

Sempre será 0 ao consultar uma tabela com otimização de memória.
last_logical_writes bigint O número de páginas do buffer pool ficou sujo na última vez 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 O número mínimo de gravações lógicas que esse procedimento armazenado já executou durante uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
max_logical_writes bigint O número máximo de gravações lógicas que esse procedimento armazenado já executou durante uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
total_logical_reads bigint O número total de leituras lógicas executadas por execuções desse procedimento armazenado desde que ele foi compilado.

Sempre será 0 ao consultar uma tabela com otimização de memória.
last_logical_reads bigint O número de leituras lógicas executadas na última vez que o procedimento armazenado foi executado.

Sempre será 0 ao consultar uma tabela com otimização de memória.
min_logical_reads bigint O número mínimo de leituras lógicas que esse procedimento armazenado já executou durante uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
max_logical_reads bigint O número máximo de leituras lógicas que esse procedimento armazenado já executou durante uma única execução.

Sempre será 0 ao consultar uma tabela com otimização de memória.
total_elapsed_time bigint O tempo total decorrido, em microssegundos, para execuções concluídas desse procedimento armazenado.
last_elapsed_time bigint O tempo decorrido, em microssegundos, para a execução concluída mais recentemente desse procedimento armazenado.
min_elapsed_time bigint O tempo mínimo decorrido, em microssegundos, para qualquer execução concluída desse procedimento armazenado.
max_elapsed_time bigint O tempo máximo decorrido, em microssegundos, para qualquer execução concluída desse procedimento armazenado.
total_spills bigint O número total de páginas derramadas pela execução desse procedimento armazenado desde que ele foi compilado.

Aplica-se a: A partir do SQL Server 2017 (14.x) CU3
last_spills bigint O número de páginas derramadas na última vez que o procedimento armazenado foi executado.

Aplica-se a: A partir do SQL Server 2017 (14.x) CU3
min_spills bigint O número mínimo de páginas que esse procedimento armazenado já derramou durante uma única execução.

Aplica-se a: A partir do SQL Server 2017 (14.x) CU3
max_spills bigint O número máximo de páginas que esse procedimento armazenado já derramou durante uma única execução.

Aplica-se a: A partir do SQL Server 2017 (14.x) CU3
pdw_node_id int O identificador do nó em que essa distribuição está ativada.

Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)
total_page_server_reads bigint O número total de leituras do servidor de página executadas por execuções desse procedimento armazenado desde que ele foi compilado.

Aplica-se a: Hiperescala do Banco de Dados SQL do Azure
last_page_server_reads bigint O número de leituras do servidor de página executadas na última vez que o procedimento armazenado foi executado.

Aplica-se a: Hiperescala do Banco de Dados SQL do Azure
min_page_server_reads bigint O número mínimo de leituras do servidor de página que esse procedimento armazenado 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 esse procedimento armazenado já executou durante uma única execução.

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

1 Para procedimentos armazenados compilados nativamente quando a coleta de estatísticas está habilitada, o tempo de trabalho é coletado em milissegundos. Se a consulta for executada em menos de um milissegundo, o valor será 0.

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.

Comentários

As estatísticas da exibição serão atualizadas quando uma execução de procedimento armazenado for concluída.

Exemplos

O exemplo a seguir retorna informações sobre os dez principais procedimentos armazenados identificados por tempo médio decorrido.

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;  

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_plan (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)