Lo primero para empezar el trabajo con SQL Server es preparar el ambiente. La instalación…
Monitor Deadlock en SQL Server
Ya conocemos qué es un deadlock en SQL Server y sabemos las terribles consecuencias que puede tener. Ahora, generar un Monitor de Deadlock es aquello que ayudará a identificar puntualmente cuáles son los causantes de tremendo error.
Siguiente paso: crear un monitor de deadlock
La forma más sencilla de tener registros de deadlock en SQL Server es a través de la creación de un Extended Event.
No necesitamos cambiar ninguna configuración del servidor ni generar grandes archivos de trazas. Simplemente creamos el Extended Event y empieza el registro exclusivo de deadlocks.
Script monitor Deadlock
CREATE EVENT SESSION [DeadlockMonitor] ON SERVER
ADD EVENT sqlserver.lock_deadlock(
ACTION(sqlos.task_time)),
ADD EVENT sqlserver.xml_deadlock_report(
ACTION(sqlos.task_time))
ADD TARGET package0.event_file(SET filename=N'DeadlockReg',
max_file_size=(10240))
WITH (MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=30 SECONDS,
MAX_EVENT_SIZE=0 KB,
MEMORY_PARTITION_MODE=NONE,
TRACK_CAUSALITY=OFF,
STARTUP_STATE=OFF)
GO
Si quieres conocer más detalles sobre este tipo de scripts, puedes consultar la documentación oficial de Extended Events en SQL Server. También puedes descargar el script desde el github.
Consideraciones al monitor
Como cualquier monitor, lo importante es tener un seguimiento y control de lo que se registra.
Optar por implementar un monitor que registre la aparición de errores de deadlocks, implica tener la meta de mejorar nuestros códigos y/o estructuras para reducir idealmente a cero la posibilidad de seguir recibiendo errores de esta característica.
Y si quieres probar esta herramienta también puedes Simular un deadlock para ver los resultados.
Puedes ver más herramientas entregadas en nuestro portal.