sys.dm_xtp_gc_queue_stats (Transact-SQL)

Применяется к:SQL ServerAzure SQL DatabaseAzure, управляемому экземпляру SQL Azure

Выводит сведения о каждой рабочей очереди подсистемы сборки мусора на сервере и различные статистические данные о них. Имеется только одна очередь на каждый логический ЦП.

Основной поток сборки мусора (бездействующий поток) отслеживает обновленные, удаленные и вставленные строки для всех транзакций, выполненных с момента последнего вызова основного потока сборки мусора. Когда поток сборки мусора начинает работать, он определяет, изменилась ли метка времени самой старой активной транзакции. Если самая старая транзакция изменилась, то бездействующий поток ставит в очередь элементы работы (фрагменты данных по 16 строк) для транзакций, наборы записи которых больше не нужны. Например, если вы удаляете 1024 строки, то спустя некоторое время в очереди появятся 64 элемента работы сборки мусора, каждый из которых будет содержать 16 удаленных строк. Пользовательская транзакция после фиксации выбирает все поставленные в очередь элементы в своем планировщике. Если в планировщике нет помещенных в очередь элементов, пользовательская транзакция выполнит поиск во всех очередях в текущем узле NUMA.

Для определения того, высвобождает ли сборка мусора память для удаленных строк, выполните sys.dm_xtp_gc_queue_stats, чтобы видеть, обрабатывается ли поставленная в очередь работа. Если записи в current_queue_depth не обрабатываются или не добавляются новые рабочие элементы в current_queue_depth, это означает, что сборка мусора не освобождает память. Например, сборка мусора не может быть выполнена, если существует длительная транзакция.

Дополнительные сведения см. в разделе In-Memory OLTP (оптимизация в памяти).

Имя столбца Type Description
queue_id int Уникальный идентификатор очереди.
total_enqueues bigint Общее число рабочих элементов подсистемы сборки мусора, поставленных в эту очередь с момента запуска сервера.
total_dequeues bigint Общее число рабочих элементов подсистемы сборки мусора, выведенных из этой очереди с момента запуска сервера.
current_queue_depth bigint Текущее количество рабочих элементов подсистемы сборки мусора в этой очереди. Этот элемент может привести к сборке мусора одного или нескольких элементов.
maximum_queue_depth bigint Максимальная глубина этой очереди.
last_service_ticks bigint Метки времени ЦП на момент последнего обслуживания очереди.

Разрешения

Необходимо разрешение VIEW SERVER STATE.

Разрешения для SQL Server 2022 и более поздних версий

Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.

Пользовательский сценарий

В этом выходных данных показано, что SQL Server работает либо на 4 ядрах, либо экземпляр SQL Server был сопоставлен с 4 ядрами:

Этот выход показывает, что в очередях нет рабочих элементов, которые необходимо обработать. Для очереди 0 общее количество рабочих элементов с момента запуска SQL составляет 15625, а максимальная глубина очереди составляет 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  

См. также

Динамические административные представления таблиц с оптимизированной для памяти таблицей (Transact-SQL)