Share via


sys.dm_xtp_gc_queue_stats (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Genera información y distintas estadísticas sobre cada cola de trabajador de recolección de elementos no utilizados en el servidor. Hay una cola por cada CPU lógica.

El subproceso principal de recolección de elementos no utilizados (el subproceso inactivo) hace un seguimiento de las filas actualizadas, eliminadas e insertadas de todas las transacciones completadas desde la última invocación del subproceso principal de recolección de elementos no utilizados. Cuando el subproceso de recolección de elementos no utilizados se reactiva, determina si la marca de tiempo de la transacción activa más antigua ha cambiado. Si la transacción activa más antigua ha cambiado, el subproceso inactivo pone en cola elementos de trabajo (en fragmentos de 16 filas) para las transacciones cuyos conjuntos de escritura no son ya necesarios. Por ejemplo, si elimina 1.024 filas, en la cola habrá 64 elementos de trabajo no utilizados recopilados, cada uno de los cuales contiene 16 filas eliminadas. Una vez que una transacción de usuario se confirma, selecciona todos los elementos puestos en cola en su programador. Si no hay ningún elemento en cola en su programador, la transacción de usuario buscará en todas las colas del nodo NUMA actual.

Es posible determinar si la recolección de elementos no utilizados está liberando memoria para las filas eliminadas; para ello, ejecute sys.dm_xtp_gc_queue_stats para ver si el trabajo puesto en cola se está procesando. Si las entradas de la current_queue_depth no se están procesando o si no se agregan nuevos elementos de trabajo a la current_queue_depth, se trata de una indicación de que la recolección de elementos no utilizados no está liberando memoria. Por ejemplo, la recolección de elementos no utilizados no se puede realizar si hay una transacción de larga duración.

Para obtener más información, vea OLTP en memoria (optimización en memoria).

Nombre de la columna Tipo Descripción
queue_id int Identificador único de la cola.
total_enqueues bigint El número total de elementos de trabajo de la recolección de elementos no utilizados puestos en esta cola desde que se inició el servidor.
total_dequeues bigint El número total de elementos de trabajo de la recolección de elementos no utilizados quitados de esta cola desde que se inició el servidor.
current_queue_depth bigint El número actual de elementos de trabajo de la recolección de elementos no utilizados presentes en esta cola. Este elemento puede implicar que el recolector de elementos no utilizados elimine varios de ellos.
maximum_queue_depth bigint La profundidad máxima que ha visto esta cola.
last_service_ticks bigint Los tics de CPU en el momento en que se dio servicio a la cola por última vez.

Permisos

Requiere el permiso VIEW SERVER STATE.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VIEW SERVER PERFORMANCE STATE en el servidor.

Escenario de usuario

Esta salida muestra que SQL Server se ejecuta en 4 núcleos o SQL Server instancia se ha afinidadizado con 4 núcleos:

Este resultado muestra que no hay elementos de trabajo en las colas que se van a procesar. Para la cola 0, el total de elementos de trabajo en cola desde el inicio de SQL es 15625 y la profundidad máxima de la cola ha 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 también

Vistas de administración dinámica de tablas con optimización para memoria (Transact-SQL)