El bloqueo de SQL Server en una base de datos ocurre cuando una transacción bloquea un recurso e impide que una o más conexiones operen en ese mismo recurso. La segunda conexión debe esperar a que se libere el bloqueo antes de poder continuar. Esto se hace para garantizar el componente de aislamiento de ACID, lo que significa que las transacciones simultáneas no son visibles entre sí hasta que se completan. El bloqueo en SQL Server puede causar estragos en el rendimiento en cualquier entorno.
Una de las tareas que realizan los administradores de la base de datos es identificar la consulta que realiza el bloqueo, solucionarla y luego ir un paso más allá para determinar la causa raíz. Investigar la causa raíz, especialmente después del hecho, puede ser una tarea muy difícil. Para la mayoría, esto significa un proceso que requiere mucho tiempo para acceder a las vistas de administración dinámica de SQL Server, como s. ys.dm_exec_requests o ejecutar procedimientos del sistema como sp_who2 para conocer los detalles de los ID de proceso del sistema (SPIDS) involucrados en la cadena de bloques. Spotlight Cloud puede reducir en gran medida sus esfuerzos para identificar estos eventos de bloqueo.
Uso de la supervisión de bases de datos para identificar bloques de SQL Server
|
Figura 1:Panel de información general |
Comenzando en el panel de información general, Spotlight Cloud proporciona una vista clara de todo el entorno. Muestra métricas que incluyen recuentos de sesiones, procesos, uso de memoria, consumo de discos y esperas, todo de un vistazo. Más importante aún, muestra claramente la actividad de bloqueo; en el centro de la Figura 1, puede ver claramente que actualmente hay dos procesos bloqueados.
Para un DBA, es necesario entrar en detalles para resolver problemas de bloqueo. Spotlight Cloud nos brinda la capacidad de profundizar en más detalles de la sesión simplemente eligiendo el menú desplegable de Descripción general, como se muestra en la Figura 2.
Figura 2:menú desplegable de la descripción general |
Spotlight Cloud le permite ver fácilmente qué sesiones están bloqueadas y qué declaraciones están involucradas. En la Figura 3, puede ver que SPID 59 y 65 están bloqueados (indicados en color naranja alrededor del estado), lo que coincide con el conteo bloqueado. También notará que Spotlight Cloud continúa brindando detalles resumidos sobre el estado actual de nuestra instancia, lo que nos permite estar atentos a los contadores importantes mientras nos sumergimos en los problemas de rendimiento.
Uso de Spotlight Cloud SQL Server Monitoring para resolver problemas de bloqueo
|
Figura 3:Tablero de sesiones |
El tablero de Sesiones (como se ve en la Figura 3) nos brinda información vital que necesitamos para resolver el problema. Aquí puede encontrar información importante como qué usuario está ejecutando las declaraciones, qué base de datos se ve afectada y cuándo se declaró la sesión. La profundidad de los detalles brinda un ahorro de tiempo real para aquellos DBA que necesitan respuestas rápidas a lo que está causando el bloqueo, para que puedan resolverlo. No solo ve que tiene dos transiciones bloqueadas, sino que también podemos ver que ambas son declaraciones de ACTUALIZACIÓN en la misma tabla que ejecuta la cuenta de Servicios de red en la base de datos de Ventas. La declaración real se muestra en la esquina inferior derecha. Por último, podemos ver tanto el SPID activo como el SPID que lo bloquea.
Hacia la esquina superior derecha de la Figura 3, en texto azul, Spotlight Cloud le indica a dónde debe ir a continuación en su investigación. El producto dentro de cada capa brinda un camino claro sobre cómo sumergirse aún más profundo. Al hacer clic en el vínculo Investigar en el Analizador de carga de trabajo, podrá ver qué invocó SPID 61, que resulta ser un bloqueador principal para SPID 65.
|
Figura 4:Analizador de carga de trabajo (aquí es donde queremos expandir Sesiones bloqueadas) |
Workload Analyzer le brinda una dimensión de desglose que le permite acceder a recursos específicos, como el bloqueo. En la Figura 4, puede ver cómo profundizamos más haciendo clic en las dos flechas de expansión en la esquina de la sección Sesiones bloqueadas.
Figura 5:Detalle de sesiones bloqueadas |
Ahora que conoce la base de datos involucrada, puede profundizar un poco más. En la navegación de la izquierda, puede profundizar en la base de datos de ventas. Aquí puede ver SPID 61 y 64, incluido el estado actual. Ambos ID de proceso del sistema están bloqueando y observe que SPID 59 ahora también está bloqueado por SPID 64. Esta vista ayuda a asegurarse de que pueda adelantarse al bloqueo mientras continúa investigando.
En la mitad inferior de la Figura 5, puede ver en el Mapeo de sesión bloqueada que le informa los detalles de SPID 61, que en este caso es nuestro bloqueador principal. El culpable es en realidad parte de un trabajo del Agente SQL que se está ejecutando, lo que tiene sentido según el usuario que encontramos ejecutando la instrucción. Si recuerda, era la cuenta del servicio de red, NT AUTHORITY\NETWORK SERVICE. En esta instancia, el Servicio del Agente SQL se ejecuta con este conjunto particular de credenciales.
El siguiente paso es averiguar qué trabajos se están ejecutando y ver si puede eliminar el trabajo para detener el bloqueo. Normalmente iría a SQL Server Management Studio para revisar el Agente SQL y ver los trabajos, pero Spotlight se lo pone fácil y también le brinda una vista completa de los trabajos. Puede encontrar esto haciendo clic en la flecha junto a las palabras "Analizador de carga de trabajo" en la parte superior, tal como lo hizo cuando navegó de Resumen a Sesiones.
Figura 6:menú desplegable de Workload Analyzer |
Prevención de futuros bloqueos de SQL Server
Investigar el bloqueo lleva tiempo y, a veces, mientras investigamos un problema en particular, el bloqueo se resuelve solo. En este caso, el trabajo que se estaba ejecutando se completó y las actualizaciones que estaban bloqueadas pudieron ejecutarse. Aunque el problema inmediato ya no existe, aún debe seguir investigando para encontrar la causa raíz para asegurarse de que puede prevenirlo en el futuro.
Dado que ya identificó SPID 61 como el trabajo que se estaba ejecutando y debido a que pasó el tiempo, ahora deberá consultar el historial. Para revisar el historial, simplemente cambie el intervalo de fechas que se muestra al intervalo de tiempo del bloqueo activo. En la Figura 7, puede ver el intervalo de fechas en la esquina derecha, puede hacer clic en el menú desplegable y ajustar las horas en consecuencia. A continuación, desea buscar SPID 61 utilizando la función de búsqueda. Cada entorno es diferente, por lo que ahora dependerá lo que haga con esta información. Ya sea que ajuste el tiempo del trabajo, realice algunos cambios en los índices, el código o las configuraciones, dependerá totalmente de usted.
Figura 7 Empleos |
Figura 8:Bloques de ejecución larga |
Algunos bloqueos aparecen y desaparecen tan rápido que no tienen un efecto significativo en el rendimiento. Cuando se queden por más tiempo, necesitamos saberlo rápidamente. Spotlight Cloud tiene una alarma de "bloqueo de ejecución prolongada" que notifica al usuario los bloqueos que no desaparecen.
Figura 9:Dimensión de objeto bloqueado |
El bloqueo es un síntoma de algunos problemas mayores y, a menudo, se necesitan diferentes perspectivas para llegar a la causa raíz. La dimensión de objeto bloqueado en el analizador de carga de trabajo de Spotlight Cloud permite al usuario determinar rápidamente los objetos que generan la mayor actividad de bloqueo para una instancia determinada.
Identificar el bloqueo y profundizar en la causa es la parte más difícil para los administradores de bases de datos. Spotlight Cloud Professional nos permite acceder a esta información de forma rápida y eficaz. Cuando el tiempo resuelve el problema activo, Spotlight Cloud nos permite seguir investigando para llegar a la causa raíz y, en última instancia, nos brinda la información que necesitamos para tomar decisiones informadas sobre cómo prevenir futuras ocurrencias.
¿Quiere ver Spotlight Cloud en acción? Comience su prueba gratuita de 30 días hoy.