sys.dm_exec_query_optimizer_memory_gateways (Transact-SQL)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed Instance

Devuelve el estado actual de los semáforos de recursos usados para limitar la optimización simultánea de consultas.

Columna Tipo Descripción
pool_id int Identificador del grupo de recursos en Resource Governor
name sysname Nombre de puerta de compilación (puerta de enlace pequeña, puerta de enlace mediana, puerta de enlace grande)
max_count int Recuento máximo configurado de compilaciones simultáneas
active_count int Recuento activo actualmente de compilaciones en esta puerta
waiter_count int Número de camareros en esta puerta
threshold_factor bigint Factor de umbral que define la parte máxima de memoria usada por la optimización de consultas. En el caso de la puerta de enlace pequeña, threshold_factor indica el uso máximo de memoria del optimizador en bytes para una consulta antes de que sea necesario obtener un acceso en la puerta de enlace pequeña. Para la puerta de enlace mediana y grande, threshold_factor muestra la parte de la memoria total del servidor disponible para esta puerta. Se usa como divisor al calcular el umbral de uso de memoria de la puerta.
threshold bigint Siguiente memoria de umbral en bytes. La consulta es necesaria para obtener acceso a esta puerta de enlace si su consumo de memoria alcanza este umbral. "-1" si la consulta no es necesaria para obtener acceso a esta puerta de enlace.
is_active bit Si la consulta es necesaria para pasar la puerta actual o no.

Permisos

SQL Server requiere el permiso VIEW SERVER STATE en el servidor.

Azure SQL Database requiere el permiso VIEW DATABASE STATE en la base de datos.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VIEW SERVER PERFORMANCE STATE en el servidor.

Observaciones

SQL Server usa un enfoque de puerta de enlace en capas para limitar el número de compilaciones simultáneas permitidas. Se usan tres puertas de enlace, incluidas pequeñas, medianas y grandes. Las puertas de enlace ayudan a evitar el agotamiento de los recursos de memoria generales mediante una mayor cantidad de consumidores que requieren memoria de compilación.

Espera en una puerta de enlace, lo que produce una compilación retrasada. Además de los retrasos en la compilación, las solicitudes limitadas tendrán asociada una acumulación de tipos de espera RESOURCE_SEMAPHORE_QUERY_COMPILE. El tipo de espera RESOURCE_SEMAPHORE_QUERY_COMPILE puede indicar que las consultas usan una gran cantidad de memoria para la compilación y que se ha agotado la memoria, o bien que hay suficiente memoria disponible en general, pero se han agotado las unidades disponibles en una puerta de enlace específica. La salida de sys.dm_exec_query_optimizer_memory_gateways se puede usar para solucionar problemas de escenarios en los que no había memoria suficiente para compilar un plan de ejecución de consultas.

Ejemplos

A. Visualización de estadísticas en semáforos de recursos

¿Cuáles son las estadísticas actuales de la puerta de enlace de memoria del optimizador para esta instancia de SQL Server?

SELECT [pool_id], [name], [max_count], [active_count],
       [waiter_count], [threshold_factor], [threshold],
       [is_active]
FROM sys.dm_exec_query_optimizer_memory_gateways;   

Consulte también

Funciones y vistas de administración dinámica (Transact-SQL)
Funciones y vistas de administración dinámica relacionadas con ejecuciones (Transact-SQL)
Cómo usar el comando DBCC MEMORYSTATUS para supervisar el uso de memoria en esperas de compilación de consultas grandes de SQL Server 2005 en RESOURCE_SEMAPHORE_QUERY_COMPILE en SQL Server 2014