Bloqueo en SQL Server

El bloqueo en los servidores SQL ocurre cuando una conexión al servidor SQL bloquea una o más consultas, y otra conexión al servidor SQL requiere un tipo de bloqueo en conflicto en la consulta o consulta bloqueada por la conexión principal. Esto lleva a que la otra conexión espere hasta que la conexión principal libere sus bloqueos. Una conexión puede bloquear otra conexión, sin importar si son o no de una aplicación idéntica o aplicaciones separadas en diferentes computadoras cliente.

Unos segundos de bloqueo son normales y evitables. Pero una cantidad excesiva de bloqueo puede hacer que las conexiones (aplicaciones o usuarios) atiendan largos períodos de su tiempo, la información más importante que se debe obtener durante una condición de bloqueo es el SPID (ID de proceso SQL) que está bloqueando y lo que está haciendo.

Recopilación de información de bloqueo:

La consulta a continuación identifica SPID (ID de proceso SQL) en la parte superior de la string de bloqueo y, por lo tanto, declaración SQL:

Select * 
from sysprocesses 
where blocked <> 0 ;

Salida: Todas las columnas como spid, kpid, block, waittime, waittype, waitresource, lastwaittype, dbid, uid, cpu, etc. están vacías.

Una vez que haya identificado el bloqueo de SPID, emita el siguiente comando para impulsar el contenido:

dbcc inputbuffer (SPID)

Para eliminar el bloqueo, use el comando KILL.

KILL SPID_ofBlockingQuery

Nota: Una vez que MATAS un proceso, lo estás finalizando y esto causará resultados impredecibles. El uso del comando SQL KILL bastante una vez contra un spid equivalente elimina el procesamiento más nuevo que está reutilizando este spid. Use el comando KILL solo una vez a menos que verifique que el método no ha cambiado con el comando KILL anterior.

Cuando se bloquea el aumento de propósito donde hay un impacto en el rendimiento del sistema, generalmente se debe a una de las siguientes razones:

  • Un SPID mantiene bloqueos en un grupo de recursos durante un período prolongado de tiempo antes de liberarlos. Este tipo de bloqueo se resuelve solo con el tiempo, pero puede provocar una degradación del rendimiento.
  • Un SPID mantiene bloqueos en un grupo de recursos y nunca los libera. Este tipo de bloqueo no se resuelve solo e impide el acceso a los recursos afectados de forma indefinida.

Para identificar el jefe de la string de bloqueo mediante el uso de funciones que se proporcionan a través de SQL Server Management Studio.

Para probar esto, use los pasos a continuación:

Seleccione el objeto del servidor, expanda Informes , expanda Informes estándar , luego haga clic en ActividadTodas las transacciones de bloqueo .

El siguiente informe muestra las transacciones en la parte superior de la string de bloqueo, si las hay:

Reporte de Actividad cuando no hay Bloqueos

Si expande la transacción, el informe mostrará las transacciones que están bloqueadas por la transacción superior. Este informe también mostrará «Sentencia SQL bloqueada» y, por lo tanto, la «Sentencia SQL bloqueada».

Publicación traducida automáticamente

Artículo escrito por khushboogoyal499 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *