Partilhar via


sys.dm_xtp_gc_queue_stats (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Fornece informações sobre cada fila de trabalhador de recolha de lixo no servidor, bem como várias estatísticas sobre cada um. Há uma fila por CPU lógica.

O fio principal de recolha de lixo (o fio Idle) acompanha linhas atualizadas, eliminadas e inseridas para todas as transações concluídas desde a última invocação do fio principal de recolha de lixo. Quando a thread de recolha de lixo ativa, determina se o carimbo temporal da transação ativa mais antiga mudou. Se a transação ativa mais antiga tiver sido alterada, então o thread inativo coloca itens de trabalho em fila (em blocos de 16 linhas) para transações cujos conjuntos de escrita já não são necessários. Por exemplo, se apagar 1.024 linhas, verá eventualmente 64 itens de trabalho de recolha de lixo em fila, cada um contendo 16 linhas eliminadas. Depois de uma transação do utilizador ser confirmada, seleciona todos os itens enfileirados no seu agendador. Se não houver itens enfileirados no seu agendador, a transação do utilizador irá pesquisar em qualquer fila no nó NUMA atual.

Pode determinar se a recolha de lixo está a libertar memória para linhas eliminadas executando sys.dm_xtp_gc_queue_stats para ver se o trabalho enfileirado está a ser processado. Se as entradas no current_queue_depth não estiverem a ser processadas ou se não houver novos itens de trabalho adicionados ao current_queue_depth, isto indica que a recolha de lixo não está a libertar memória. Por exemplo, a recolha de lixo não pode ser feita se houver uma transação de longa duração.

Para obter mais informações, consulte In-Memory OLTP (In-Memory Optimization).

Nome da coluna Tipo Description
queue_id int O identificador único da fila.
total_enqueues bigint O número total de itens de trabalho de recolha de lixo enfileirados nesta fila desde que o servidor começou.
total_dequeues bigint O número total de itens de trabalho de recolha de lixo foi retirado desta fila desde o início do servidor.
current_queue_depth bigint O número atual de itens de trabalho de recolha de lixo presentes nesta fila. Este item pode implicar que um ou mais sejam recolhidos no lixo.
maximum_queue_depth bigint A profundidade máxima que esta fila já viu.
last_service_ticks bigint A CPU faz ticks na altura em que a fila foi mantida pela última vez.

Permissions

Requer permissão de VISUALIZAR ESTADO DO SERVIDOR.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Cenário do Utilizador

Este resultado mostra que o SQL Server está a correr em 4 núcleos ou que a instância do SQL Server foi affinizada para 4 núcleos:

Esta saída mostra que não há itens de trabalho nas filas para processar. Para a fila 0, o total de itens de trabalho desalinhados desde o arranque SQL é 15625 e a profundidade máxima da fila tem sido 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  

Consulte também

Memory-Optimized Vistas de Gestão Dinâmica da Tabela (Transact-SQL)