Pregunta

Editado:¿Por qué las sesiones que informan están bloqueadas pero en espera? PAGELATCH_*, y no LCK_M_ ¿Tipos de espera relacionados?

Anteriormente supuse que el servidor SQL solo informaría sesiones de bloqueo en la columna blocking_session_Id.Si las sesiones bloqueadas estuvieran esperando un bloqueo lógico y nada más, como un PAGELATCH_*.

enter image description here

¿Fue útil?

Solución

Anteriormente supuse que SQL Server solo informaría una sesión de bloqueo en la columna blocking_session_id, si las sesiones bloqueadas estaban esperando un bloqueo lógico y nada más, como un PAGELATCH_*.

Estás usando Adam Machanic sp_WhoIsActive procedimiento, no una función integrada de SQL Server.El procedimiento de Adam informa todas las causas "interesantes" de bloqueo, no sólo el bloqueo de bloqueo.La información subyacente proviene de varias fuentes, incluidas procesos del sistema, sys.dm_exec_requests, y sys.dm_os_waiting_tasks.

Una tarea puede esperar otras cosas además de un candado.Es posible, por ejemplo, adquirir un bloqueo exclusivo en una fila de una página, pero aún así tener que esperar para adquirir una página exclusiva. pestillo (porque otras tareas han bloqueado la misma página en un modo incompatible).

En su ejemplo, el PAGELATCH_EX Los pestillos de página exclusivos se encuentran en páginas de índice o datos normales, no en páginas PFS, GAM, SGAM, DCM o BCM, como lo indica el (*) al final de la esperar_info.

Puede encontrar la documentación (entradas de blog) para sp_WhoIsActive aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top