Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Monitoriza o progresso da consulta em tempo real enquanto a consulta está em execução. Por exemplo, use este DMV para determinar qual a parte da consulta que está a decorrer. Ligue este DMV a outros DMVs do sistema usando as colunas identificadas no campo de descrição. Ou, junte este DMV a outros contadores de desempenho (como Performance Monitor, xperf) usando as colunas de carimbo temporal.
Tabela retornada
Os contadores devolvidos são por operador por thread. Os resultados são dinâmicos e não correspondem aos resultados das opções existentes, como SET STATISTICS XML ON as que só criam saída quando a consulta termina.
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
| identificador_de_sessão | smallint | Identifica a sessão em que esta consulta é executada. Referências dm_exec_sessions.session_id. |
| id_de_pedido | int | Identifica o pedido alvo. Referências dm_exec_sessions.request_id. |
| sql_handle | varbinary(64) | É um token que identifica de forma única o batch ou procedimento armazenado do qual a consulta faz parte. Referências dm_exec_query_stats.sql_handle. |
| plan_handle | varbinary(64) | É um token que identifica de forma única um plano de execução de consulta para um lote que foi executado e cujo plano reside na cache do plano, ou que está atualmente a ser executado. Referências dm_exec_query_stats.plan_handle. |
| physical_operator_name | nvarchar(256) | Nome do operador físico. |
| node_id | int | Identifica um nó operador na árvore de consultas. |
| thread_id | int | Distingue os threads (para uma consulta paralela) pertencentes ao mesmo nó operador de consulta. |
| endereço da tarefa | varbinary(8) | Identifica a tarefa SQLOS que este thread está a usar. Referências dm_os_tasks.endereço_tarefa. |
| row_count | bigint | Número de linhas devolvidas pelo operador até agora. |
| rewind_count | bigint | Número de retrocessos até agora. |
| rebind_count | bigint | Número de rebinds até agora. |
| end_of_scan_count | bigint | Número de exames finais até agora. |
| estimate_row_count | bigint | Número estimado de linhas. Pode ser útil comparar estimated_row_count com a row_count real. |
| first_active_time | bigint | O tempo, em milissegundos, quando o operador foi chamado pela primeira vez. |
| last_active_time | bigint | A hora, em milissegundos, em que o operador foi chamado pela última vez. |
| open_time | bigint | Carimbo temporal quando aberto (em milissegundos). |
| first_row_time | bigint | Carimbo temporal em que a primeira fila foi aberta (em milissegundos). |
| last_row_time | bigint | Carimbo temporal em que a última linha foi aberta (em milissegundos). |
| close_time | bigint | Carimbo temporal quando estiver perto (em milissegundos). |
| elapsed_time_ms | bigint | Tempo total decorrido (em milissegundos) utilizado pelas operações do nó alvo até então. |
| cpu_time_ms | bigint | O tempo total de utilização da CPU (em milissegundos) pelas operações do nó alvo até agora. |
| database_id | smallint | ID da base de dados que contém o objeto sobre o qual as leituras e escritas estão a ser realizadas. |
| object_id | int | O identificador do objeto sobre o qual as leituras e escritas estão a ser realizadas. Referências sys.objects.object_id. |
| index_id | int | O índice (se houver) contra o qual o conjunto de linhas é aberto. |
| scan_count | bigint | Número de digitalizações de tabelas/índices até agora. |
| logical_read_count | bigint | Número de leituras lógicas até agora. |
| physical_read_count | bigint | Número de leituras físicas até agora. |
| read_ahead_count | bigint | Número de leituras antecipadas até agora. |
| write_page_count | bigint | Número de páginas escritas até agora devido a derrames. |
| lob_logical_read_count | bigint | Número de leituras lógicas LOB até agora. |
| lob_physical_read_count | bigint | Número de leituras físicas LOB até agora. |
| lob_read_ahead_count | bigint | Número de leituras LOB até agora. |
| segment_read_count | int | Número de leituras antecipadas de segmentos até agora. |
| segment_skip_count | int | Número de segmentos saltados até agora. |
| actual_read_row_count | bigint | Número de linhas lidas por um operador antes de o predicado residual ser aplicado. |
| estimated_read_row_count | bigint |
Aplica-se a: A partir do SQL Server 2016 (13.x) SP1. Número de linhas estimadas a serem lidas por um operador antes de o predicado residual ser aplicado. |
Observações gerais
Se o nó do plano de consulta não tiver qualquer E/S, todos os contadores relacionados com E/S são definidos como NULL.
Os contadores relacionados com I/O reportados por este IMT são mais detalhados do que os reportados SET STATISTICS IO das seguintes duas formas:
SET STATISTICS IOagrupa os marcadores de todas as E/S de uma dada tabela. Com este DMV, terá contadores separados para cada nó no plano de consulta que realiza I/O para a tabela.Se houver uma varredura paralela, este IMT reporta contadores para cada uma das linhas paralelas que trabalham na varredura.
A partir do SQL Server 2016 (13.x) SP1, a infraestrutura padrão de perfil de estatísticas de execução de consultas existe lado a lado com uma infraestrutura leve de perfilagem de estatísticas de execução de consultas.
SET STATISTICS XML ON e SET STATISTICS PROFILE ON usar sempre a infraestrutura padrão de perfil de estatísticas de execução de consultas. Para sys.dm_exec_query_profiles ser preenchido, uma das infraestruturas de perfil de consultas deve estar ativada. Para obter mais informações, consulte a infraestrutura de perfilamento de consultas .
Observação
A consulta em investigação tem de começar depois de a infraestrutura de perfil de consultas estar ativada; ativar após o início da consulta não produzirá resultados em sys.dm_exec_query_profiles. Para mais informações sobre como ativar as infraestruturas de perfilagem de consultas, consulte Infraestrutura de Perfilamento de Consultas.
Permissions
- No SQL Server e Azure SQL Managed Instance, requer
VIEW DATABASE STATEpermissão e pertença ao papel dedb_ownerbase de dados. - No Azure SQL Database Premium Tiers, requer a
VIEW DATABASE STATEpermissão na base de dados. - Nos objetivos de serviço Azure SQL Database Basic, S0 e S1, e para bases de dados em pools elásticos, é necessária a conta de administrador do servidor ou a conta de administrador Microsoft Entra . Em todos os outros objetivos de serviço de base de dados SQL, a
VIEW DATABASE STATEpermissão é necessária na base de dados.
Permissões para SQL Server 2022 e posterior
Requer a permissão VIEW DATABASE PERFORMANCE STATE no banco de dados.
Examples
Passo 1: Inicie sessão numa sessão em que planeia executar a consulta que irá analisar com sys.dm_exec_query_profiles. Para configurar a consulta para perfil, use SET STATISTICS PROFILE ON. Executa a tua consulta nesta mesma sessão.
--Configure query for profiling with sys.dm_exec_query_profiles
SET STATISTICS PROFILE ON;
GO
--Or enable query profiling globally under SQL Server 2016 SP1 or above (not needed in SQL Server 2019)
DBCC TRACEON (7412, -1);
GO
--Next, run your query in this session, or in any other session if query profiling has been enabled globally
Passo 2: Inicie sessão numa segunda sessão diferente da sessão em que a sua consulta está a ser executada.
A seguinte declaração resume o progresso alcançado pela consulta atualmente a decorrer na sessão 54. Para isso, calcula o número total de linhas de saída de todos os threads para cada nó e compara-o com o número estimado de linhas de saída para esse nó.
--Run this in a different session than the session in which your query is running.
--Note that you may need to change session id 54 below with the session id you want to monitor.
SELECT node_id,physical_operator_name, SUM(row_count) row_count,
SUM(estimate_row_count) AS estimate_row_count,
CAST(SUM(row_count)*100 AS float)/SUM(estimate_row_count)
FROM sys.dm_exec_query_profiles
WHERE session_id=54
GROUP BY node_id,physical_operator_name
ORDER BY node_id;
Ver também
Visualizações e funções de gerenciamento dinâmico (Transact-SQL)
Visualizações e funções de gerenciamento dinâmico relacionadas à execução (Transact-SQL)