Compartilhar via


sys.dm_xtp_gc_queue_stats (Transact-SQL)

Aplica-se a: SQL ServerBanco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Envia informações sobre cada fila de trabalhos de coleta de lixo no servidor, e várias estatísticas sobre cada uma delas. Há uma fila por CPU lógica.

O thread principal de coleta de lixo (thread inativo) rastreia linhas atualizadas, excluídas e inseridas de todas as transações concluídas desde a última chamada do thread principal de coleta de lixo. Quando o thread de coleta de lixo é ativado, ele determina se o carimbo de data/hora da transação ativa mais antiga foi alterado. Se a transação ativa mais antiga tiver sido alterada, o thread inativo enfileirará os itens de trabalho (em partes de 16 linhas) para transações cujos conjuntos de gravações não são mais necessários. Por exemplo, se você excluir 1.024 linhas, acabará vendo 64 itens de trabalho de coleta de lixo enfileirados, cada um contendo 16 linhas excluídas. Depois que uma transação de usuário é confirmada, ela seleciona todos os itens enfileirados em seu agendador. Se não houver itens enfileirados no agendador, a transação do usuário realizará a pesquisa em qualquer fila do nó NUMA atual.

Você pode determinar se a coleta de lixo está liberando memória para as linhas excluídas executando sys.dm_xtp_gc_queue_stats para saber se o trabalho enfileirado está sendo processado. Se as entradas no current_queue_depth não estiverem sendo processadas ou se nenhum novo item de trabalho estiver sendo adicionado ao current_queue_depth, isso é uma indicação de que a coleta de lixo não está liberando memória. Por exemplo, a coleta de lixo não poderá ser feita se houver uma transação de execução longa.

Para obter mais informações, veja OLTP in-memory (otimização na memória).

Nome da coluna Type Descrição
queue_id int O identificador exclusivo da fila.
total_enqueues bigint O número total de itens de trabalho de coleta de lixo enfileirados para essa fila desde que o servidor foi iniciado.
total_dequeues bigint O número total de itens de trabalho de coleta de lixo removidos dessa fila desde que o servidor foi iniciado.
current_queue_depth bigint O número atual de itens de trabalho de coleta de lixo presentes nessa fila. Este item pode indicar um ou mais para serem limpos.
maximum_queue_depth bigint A profundidade máxima que essa fila viu.
last_service_ticks bigint Os tiques de CPU no momento em que a fila foi atendida por último.

Permissões

Requer a permissão VIEW SERVER STATE.

Permissões do SQL Server 2022 e posteriores

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

Cenário de uso

Esta saída mostra que o SQL Server está em execução em 4 núcleos ou que a instância do SQL Server foi afinidade com 4 núcleos:

A saída mostra que não há nenhum item de trabalho nas filas para processar. Para a fila 0, o total de itens de trabalho removidos da fila desde a inicialização do SQL é 15625 e a profundidade máxima da fila foi 15625.

queue_id total_enqueues total_dequeues current_queue_depth  maximum_queue_depth  last_service_ticks  
----------------------------------------------------------------------------------------------------  
0        15625                15625    0                    15625                1233573168347  
1        15625                15625    0                    15625                1234123295566  
2        15625                15625    0                    15625                1233569418146  
3        15625                15625    0                    15625                1233571605761  

Confira também

Exibições de gerenciamento dinâmico de tabela com otimização de memória (Transact-SQL)