PREGUNTAS Y RESPUESTAS-Identificar bloqueos

Hace algún tiempo que no publico en la sección de preguntas y respuestas. Pues la semana pasada me preguntaron. Cuál es la mejor forme de identificar bloqueos?

Pues esa pregunta puede tener varias respuestas, entre ellas las siguientes:

  • Usar el Monitor de Actividad en el Management Studio
  • Usar el procedimiento almacenado del sistema sp_who2, columna BlkBy
  • Usar los reportes estándar de SQL Server
  • Usar las vistas dinámicas sys.dm_tran_locks o sys.dm_exec_requests

Antes que nada, es importante aclarar que los bloqueos no son realmente un problema, siempre y cuando se mantenga controlados y no duren muchos segundos. Los bloqueos forman parte de los mecanismos que usa SQL Server para garantizar la concurrencia de usuarios y evitar que más de una transacción acceda al mismo tiempo a un mismo dato. Eso forma parte del concepto de Aislamiento, como parte de las características de una transacción.

En este vinculo pueden informarse sobre las características de una transacción: ACID

Regresando a la pregunta, yo particularmente prefiero usar las vistas dinámicas por que me dan la flexibilidad de usar consultas con T-SQL y obtener las columnas y filas que realmente necesito. Les propongo este script para consultar los bloqueos:

Para poder mostrar resultados para esta consulta, simulé un bloqueo de la siguiente manera:

  1. Abrí una ventana de consultas en Management Studio y ejecuté la siguiente consulta, en la que a propósito he abierto una transacción sin el comando de cierre (COMMIT o ROLLBACK):

2. Luego abrí una segunda ventana de consultas en Management Studio y ejecuté la siguiente consulta, que intenta leer el registro que está asegurado o retenido por la transacción:

Esto genera un bloqueo, el cual voy a identificar con la consulta mostrada líneas más arriba (He copiado el resultado a Excel para mejor visualización):

Result Block

Aquí solo aparece una línea, y solo se va a capturar el bloqueo mientras este exista. Es decir, esta consulta no muestra una historia, si no información en línea y en tiempo real

 

Vínculos a temas relacionados:

 

Deja un comentario

Tu dirección de correo electrónico no será publicada.