Cómo averiguar quién está bloqueando una mesa en mysql

Cómo averiguar quién está bloqueando una mesa en mysql
Un bloqueo mysql se refiere a una bandera de bloqueo conectada a una mesa. El uso principal de los bloqueos MySQL está en las sesiones de usuario para evitar que otras sesiones de usuario accedan a la tabla durante una sesión activa. Una sesión específica de MySQL solo puede acceder a sus bloqueos y no a los bloqueos asociados con otros clientes.

Una vez que una mesa está bloqueada en una sesión en particular, otras sesiones no pueden leer o escribir en la tabla a menos que se libere el bloqueo de la sesión. Por lo tanto, todas las demás sesiones están en modo de espera hasta que se libera el bloqueo.

Esta guía corta le mostrará cómo mostrar las bloqueos disponibles utilizando el comando de la lista de procesos de la muestra.

Cómo bloquear una mesa

Para adquirir un estado de bloqueo en una tabla específica, puede usar la declaración de tablas de bloqueo. La sintaxis general para las tablas de bloqueo es:

MySQL> Tablas de bloqueo TB_NAME [LOCK_TYPE]

En el tipo de bloqueo, puede especificar el bloqueo de lectura o lectura. El ejemplo a continuación establece el bloqueo de escritura en la tabla del actor.

Mesas de bloqueo Sakila.actor leyó;

Una vez que tenga el bloqueo de bloqueo, todas las otras sesiones no actualizarán ningún dato almacenado en la tabla.

Por ejemplo, la siguiente declaración fallará a menos que la tabla esté desbloqueada.

Insertar en sakila.ACTOR (FIRST_NAME, LIST_NAME, LIST_UPDATE) VALORES ('Hello', 'World', current_date ());

MySQL le dará un error de lectura como:

Error 1099 (hy000): la tabla 'actor' se bloqueó con un bloqueo de lectura y no se puede actualizar

Cómo desbloquear una mesa

Para desbloquear una tabla, use la consulta de tablas de desbloqueo como:

MySQL> Desbloquear tablas;

Mostrar mesas bloqueadas

Por defecto, no hay una forma definitiva que pueda consultar para mostrar para una mesa bloqueada como: (Mostrar tablas bloqueadas;).

Sin embargo, podemos usar un comando de lista de procesos para mostrar las tablas bloqueadas y los usuarios.

Use el comando:

Mostrar lista de procesos;

Esto arrojará la información y las consultas que esperan para bloquear.

El ejemplo anterior muestra al usuario raíz bloqueando la tabla en la tabla del actor.

Conclusión

Este breve tutorial le mostró cómo bloquear y desbloquear tablas y ver a los usuarios que tienen una mesa bloqueada en una base de datos.