Este tema describe cómo usar la página de estadísticas de bloqueo por candados para identificar rápidamente las sesiones que causan bloqueos prolongados y consultar sus detalles.
Requisitos previos
La instancia debe usar un disco en la nube.
Esta función no está disponible para las instancias de ApsaraDB RDS for SQL Server 2008 R2 que usan discos en la nube.
Esta función solo está disponible para las instancias de ApsaraDB RDS for SQL Server en las siguientes regiones: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Ulanqab), China (Shenzhen), China (Heyuan), China (Guangzhou), China (Chengdu), China (Hong Kong), Singapore o UAE (Dubai).
Contexto
En SQL Server, el sistema adquiere un candado sobre un recurso cuando una sesión lo modifica. Esto mantiene la consistencia de los datos e impide que otras sesiones concurrentes accedan al mismo recurso o lo modifiquen. En condiciones normales, el candado se retiene poco tiempo y se libera al terminar la modificación. Así, la siguiente sesión puede acceder al recurso. Sin embargo, problemas como una instrucción SQL lenta pueden mantener un recurso bloqueado durante un periodo prolongado, lo cual afecta gravemente el rendimiento.
Para resolver este problema, ApsaraDB RDS for SQL Server ofrece una página de estadísticas de bloqueo por candados. En esta página encontrará rápidamente información como el identificador de proceso del servidor (SPID) de la sesión que bloquea, la hora en que ocurrió el bloqueo y la instrucción SQL que lo provocó. Esta información le ayuda a identificar la causa raíz.
Cómo funciona
Una sesión bloqueada durante aproximadamente 2 segundos no suele causar problemas importantes. No obstante, si varias sesiones se bloquean repetidamente por más de 2 segundos en un periodo corto, el impacto en todo el sistema puede ser significativo.
El sistema toma muestras del bloqueo por candados cada 10 segundos. En cada punto de muestreo, si una sesión lleva más de 2 segundos ejecutando una instrucción SQL y bloquea a otras sesiones, el sistema la captura y la registra en la página de estadísticas de bloqueo por candados.
Procedimiento
Vaya a la página Instances. En la barra de navegación superior, seleccione la región donde reside la instancia de RDS. A continuación, busque la instancia de RDS y haga clic en su ID.
En el panel de navegación izquierdo, elija Autonomy Services > Lock Optimization.
Haga clic en la pestaña Blocking para consultar los detalles de bloqueo de la instancia.
Descripción de la página
-
Blocking Overview
Muestra la cantidad de eventos de bloqueo dentro de un rango de tiempo especificado.
Los rangos de tiempo incluyen Last 24 Hours, Last 7 Days, Last 14 Days y Last 30 Days.
-
Blocking Duration Trend
Muestra un gráfico de tendencias de la duración del bloqueo para el periodo seleccionado.
Coloque el cursor sobre un punto en el tiempo para consultar sus detalles de bloqueo, que incluyen lo siguiente:
La hora en que ocurrió el bloqueo.
Processes_blocked: la cantidad de sesiones bloqueadas.
-
Uncommited_tran: la cantidad de transacciones sin confirmar.
NotaLas transacciones sin confirmar no liberan los candados.
El QueryHash (un valor hash de una instrucción SQL específica) y el tiempo de bloqueo correspondiente.

-
Blocking Source Details
Muestra información detallada sobre el origen del bloqueo. Los detalles incluyen lo siguiente:
SPID: el SPID de la sesión que bloquea.
QueryHash: un valor hash generado a partir de la instrucción SQL. Las instrucciones SQL del mismo tipo comparten el mismo QueryHash.
Wait Type: el motivo por el que la sesión en espera está bloqueada. Para obtener más información sobre los tipos de espera, consulte Wait Types.
Execution Duration (ms): el tiempo durante el cual la sesión se ha estado ejecutando.
-
SQL: la instrucción SQL que provocó el bloqueo.
NotaColoque el cursor sobre la instrucción SQL y haga clic en el ícono
que aparece a la derecha para copiar la instrucción SQL. Time: la hora en que ocurrió el bloqueo.
Database Name: el nombre de la base de datos donde ocurrió el bloqueo.
Haga clic en cualquier parte de una fila para consultar el diagrama de bloqueo (Blocking Diagram) correspondiente en la parte inferior de la página.
-
Blocking Diagram
Muestra el SPID que bloquea (rojo), el SPID bloqueado (azul), el tipo de candado y la duración del bloqueo. Para obtener más información sobre los tipos de candado, consulte Lock Types.

Coloque el cursor sobre un SPID para consultar sus detalles de bloqueo, que incluyen lo siguiente:
SPID: el identificador de proceso del servidor.
BlockedBySpid: el SPID de la sesión que bloquea.
WaitType: el tipo de espera.
WaitTimeMs: la duración del bloqueo, en milisegundos.
CMD: el tipo de comando SQL de la sesión actual.
CPU: el tiempo de CPU, en milisegundos.
DBName: el nombre de la base de datos.
ClientAppName: el nombre de la aplicación cliente.
HostName: el nombre de host del cliente.
LoginId: el nombre de usuario.
PhysicalIO: la E/S consumida por la sesión actual. 1 PhysicalIO equivale a 8 KB.
QueryHash: un valor hash generado a partir de la instrucción SQL. Las instrucciones SQL del mismo tipo comparten el mismo QueryHash.
StartTime: la hora de inicio del lote actual. Un lote puede contener varias instrucciones SQL y compartir recursos como valores de variables.
Status: el estado de la sesión actual.
SQL: haga clic en un SPID rojo o azul para mostrar los detalles de ejecución de SQL debajo del Blocking Diagram.
-
SQL Details
En el Blocking Diagram, haga clic en un SPID rojo o azul para mostrar los detalles de ejecución de SQL de esa sesión. Haga clic en Click to Copy para copiar rápidamente la instrucción SQL y analizarla o solucionar problemas.