Cualquier usuario avanzado de base de datos (no es preciso ser un DBA) se ha encontrado alguna vez con bloqueos de recursos. Pero ¿cómo podemos analizarlos?, ¿cómo evolucionan en el tiempo? ¿hay pautas repetitivas de bloqueos? ¿quién bloquea a quién?
Empecemos por un breve resumen del funcionamiento de los bloqueos en SQL Server y repasaremos después los pros y los contras de las herramientas clásicas de análisis. Por último, se presentará una solución dedicada al análisis de bloqueos con mínimo impacto en el rendimiento: Cazabloqueos de Verne.
Tipos de bloqueos en SQL Server
En un sistema de base de datos relacional, que tenga múltiples transacciones concurrentes intentando acceder a los mismos recursos, es necesario establecer algún mecanismo que regule ese acceso y asegure la integridad de los datos. Ese mecanismo son los bloqueos. Veamos en detalle algunos tipos de bloqueo:
1. Bloqueos compartidos (Shared Locks): Permiten que múltiples transacciones lean un recurso compartido simultáneamente, pero impiden que cualquier transacción modifique los datos hasta que se libere el bloqueo compartido.
2. Bloqueos exclusivos (Exclusive Locks): Se utilizan cuando una transacción pretende modificar los datos de un recurso compartido (por ejemplo, INSERT o DELETE). Un bloqueo exclusivo impide que otras transacciones lean o modifiquen los datos hasta que se libere el bloqueo.
3. Bloqueo de intención (Intention Lock): Se utilizan para introducir una estructura jerárquica en el mecanismo. Para indicar que una transacción tiene la intención de adquirir un bloqueo a nivel de fila en una tabla, se genera un bloqueo de tipo INTENT, en los objetos superiores en la jerarquía de la misma.
4. Bloqueo de actualización (Update Lock): Tipo especial para actualizaciones de datos. Se comporta como un bloqueo compartido (S) hasta el momento preciso en que se actualizan los datos y en ese instante, pasa a ser de tipo exclusivo (X).
5. Bloqueos de esquema (Schema Lock): Se utilizan en caso de operaciones de tipo DDL. Los hay compartidos (Sch-S) para operaciones que no modifican la estructura de los objetos o exclusivos (Sch-X) para las que sí modifican.
Existen algunos tipos más (Bulk Update, Key Range…) pero no son tan comunes como los anteriores.
Herramientas clásicas de análisis de bloqueos en SQL Server
Existen diferentes herramientas clásicas de análisis de bloqueos y aunque todas ellas aportan información relevante, también presentan inconvenientes.
Profundiza en detalle en las herramientas de análisis de bloqueo en SQL Server en nuestro e-book escrito por Pablo Zamora del Corral, DBA SQL Server con 10 años de experiencia y Data & AI Architect en Verne Tech.
Conocerás los tipos de bloqueo más comunes en SQL Server, los niveles de aislamiento, las herramientas clásicas de análisis, las características que deben tener y nuestra herramienta alternativa cazabloqueos de Verne.
Partiendo de dichos inconvenientes, se puede elaborar una carta a los Reyes Magos con los requisitos que debería cumplir nuestra herramienta de análisis ideal:
- Visión cronológica del comportamiento de los bloqueos y su evolución.
- Impacto mínimo en el rendimiento.
- Resultados intuitivos y fáciles de analizar, que permitan obtener toda la información posible de un vistazo.
A continuación presentamos la herramienta Cazabloqueos de Verne cumple todos estos requisitos (y algunos más) como veremos a continuación.
Cazabloqueos de Verne
Se trata de una solución dedicada de análisis de bloqueos con las siguientes características:
- Detección de patrones de bloqueo repetitivos a lo largo del tiempo (Visión cronológica).
- Impacto casi nulo en el rendimiento.
- Varios niveles de detalle, comenzando por un dashboard que presenta la información general.
Además, permite todo tipo de filtros y el número de días de información presentada es totalmente configurable. Cuenta con una visión cronológica del comportamiento de los bloqueos y su evolución mediante un dashboard con un mapa de calor, tiene un impacto mínimo en el rendimiento y puedes obtener un análisis detallado a distintos niveles: dashboard general, locking hour details, blocker SPID details, blocker SPID queries in hour y blocker SPID details.
Recuerda que puedes descargar el e-book completo con información más detallada:
Conclusiones
Los bloqueos son un mecanismo necesario para manejar la concurrencia en SQL Server. Conocer los tipos de bloqueo posibles y cómo afectan a cada nivel de aislamiento es clave para poder buscar soluciones a los mismos.
Las herramientas clásicas de análisis ayudan a obtener información relevante en escenarios de bloqueo pero también presentan inconvenientes que las pueden hacer inadecuadas.
La herramienta Cazabloqueos de Verne soluciona estos inconvenientes y supone una nueva alternativa a las herramientas clásicas, ya que permite una visión cronológica de la evolución de los bloqueos, la identificación de patrones dentro de los mismos y un análisis detallado de cada caso, todo ello acompañado con un impacto mínimo en el rendimiento de los sistemas.