sys.dm_exec_query_memory_grants (Transact-SQL)
Devuelve información acerca de las consultas que han adquirido una concesión de memoria o que aún requieren una concesión de memoria para ejecutarse. Las consultas que no están a la espera de una concesión de memoria no aparecerán en esta vista.
Nombre de columna |
Tipo de datos |
Descripción |
---|---|---|
session_id |
smallint |
Id. (SPID) de la sesión en la que se está ejecutando esta consulta. |
request_id |
int |
Id. de la solicitud. Es único en el contexto de la sesión. |
scheduler_id |
int |
Id. del programador que programa esta consulta. |
dop |
smallint |
Grado de paralelismo de esta consulta. |
request_time |
datetime |
Fecha y hora a la que esta consulta solicitó la concesión de memoria. |
grant_time |
datetime |
Fecha y hora a la que se concedió la memoria para esta consulta. Es NULL si aún no se ha concedido la memoria. |
requested_memory_kb |
bigint |
Memoria solicitada total en kilobytes. |
granted_memory_kb |
bigint |
Memoria total realmente otorgada en kilobytes. Puede ser NULL si aún no se ha concedido la memoria. En una situación típica, este valor debe ser igual a requested_memory_kb. En la creación de índices, el servidor puede permitir memoria adicional a petición además de la memoria concedida inicialmente. |
required_memory_kb |
bigint |
Memoria mínima necesaria para ejecutar esta consulta en kilobytes. requested_memory_kb es igual o mayor que esta cantidad. |
used_memory_kb |
bigint |
Memoria física usada en este momento en kilobytes. |
max_used_memory_kb |
bigint |
Memoria física máxima usada hasta este momento en kilobytes. |
query_cost |
float |
Costo estimado de la consulta. |
timeout_sec |
int |
Tiempo de espera en segundos antes de que esta consulta abandone la solicitud de concesión de memoria. |
resource_semaphore_id |
smallint |
Identificador no único del semáforo de recursos al que está esperando esta consulta.
|
queue_id |
smallint |
Id. de la cola de espera en la que esta consulta espera las concesiones de memoria. Es NULL si ya se ha concedido la memoria. |
wait_order |
int |
Orden secuencial de las consultas en espera en el queue_id especificado. Este valor puede cambiar para una determinada consulta si otras consultas obtienen concesiones de memoria o tiempos de espera. Es NULL si ya se ha concedido la memoria. |
is_next_candidate |
bit |
Candidata para la siguiente concesión de memoria. 1 = Sí 0 = No NULL = Ya se ha concedido la memoria. |
wait_time_ms |
bigint |
Tiempo de espera en milisegundos. Es NULL si ya se ha concedido la memoria. |
plan_handle |
varbinary(64) |
Identificador de este plan de consulta. Use sys.dm_exec_query_plan para extraer el plan XML real. |
sql_handle |
varbinary(64) |
Identificador del texto de Transact-SQL de esta consulta. Use sys.dm_exec_sql_text para obtener el texto de Transact-SQL real. |
group_id |
int |
Id. para el grupo de cargas de trabajo donde se está ejecutando la consulta. |
pool_id |
int |
Id. del grupo de recursos de servidor al que pertenece este grupo de cargas de trabajo. |
is_small |
tinyint |
Cuando se establece en 1, indica que esta concesión utiliza el semáforo de recursos pequeño. Cuando se establece en 0, indica que se utiliza un semáforo normal. |
ideal_memory_kb |
bigint |
Tamaño, en kilobytes (KB), de la concesión de memoria para ajustar todo en la memoria física. Está basado en la estimación de la cardinalidad. |
Permisos
Requiere el permiso VIEW SERVER STATE en el servidor.
Comentarios
Un escenario de depuración típico para un tiempo de espera de consulta puede tener el siguiente aspecto:
Compruebe el estado de la memoria del sistema global con sys.dm_os_memory_clerks, sys.dm_os_sys_info y diversos contadores de rendimiento.
Compruebe las reservas de memoria para la ejecución de consultas en sys.dm_os_memory_clerks, donde type = 'MEMORYCLERK_SQLQERESERVATIONS'.
Compruebe las consultas que están en espera de concesiones con sys.dm_exec_query_memory_grants.
Examine más las consultas que utilizan mucha memoria con sys.dm_exec_requests.
Si sospecha que hay una consulta descontrolada, examine el plan de presentación en sys.dm_exec_query_plan y el texto del lote en sys.dm_exec_sql_text.
Las consultas que utilizan vistas de administración dinámica que incluyen ORDER BY o agregados pueden aumentar el consumo de memoria y, de esta forma, contribuir al problema que están solucionando.
La característica del regulador de recursos permite que un administrador de bases de datos distribuya los recursos del servidor entre los grupos de recursos de servidor, hasta un máximo de 64 grupos. A partir de SQL Server 2008, cada grupo se comporta como una pequeña instancia de servidor independiente y requiere 2 semáforos. El número de filas devuelto por sys.dm_exec_query_resource_semaphores puede ser hasta 20 veces mayor que las filas devueltas en SQL Server 2005.
Vea también
Referencia
sys.dm_exec_query_resource_semaphores (Transact-SQL)
Funciones y vistas de administración dinámica relacionadas con ejecuciones (Transact-SQL)