lock - mysql select for update ejemplo
Detectando tablas bloqueadas(bloqueadas por LOCK TABLE) (6)
¡No se puede para cerraduras sin nombre!
Más información: http://forums.mysql.com/read.php?21,222363,223774#msg-223774
No, a menos que use primero un bloqueo de aviso. Es posible que también desee examinar el uso de INSERT DELAYED en su lugar.
Sin embargo, puede usar SHOW OPEN TABLES
para mostrar el estado de cada tabla.
También hay cosas terribles como "MetaLock" y estoy feliz de que no hayas encontrado eso.
¿Hay alguna manera de detectar tablas bloqueadas en MySQL? Me refiero a tablas bloqueadas por el comando LOCK TABLE table WRITE/READ
.
(Tenga en cuenta que los lectores interesados en detectar bloqueos con nombre adquiridos con GET_LOCK
deben leer Mostrar todos los bloqueos actuales de get_lock en su lugar).
Este article describe cómo obtener información sobre los recursos bloqueados de MySQL. mysqladmin debug
también puede ser de alguna utilidad.
La forma más simple es:
SHOW OPEN TABLES WHERE In_use > 0
Obtiene las tablas bloqueadas solo de la base de datos actual.
Puede crear su propio bloqueo con GET_LOCK (lockName, timeOut)
Si haces un GET_LOCK(lockName, 0)
con un tiempo de espera de 0 antes de bloquear las tablas y luego lo sigues con un RELEASE_LOCK(lockName)
entonces todos los demás hilos que realizan un GET_LOCK()
obtendrán un valor de 0 que les dirá que el bloqueo está siendo retenido por otro hilo.
Sin embargo, esto no funcionará si no tiene todos los subprocesos llamando a GET_LOCK()
antes de bloquear tablas. La documentación para bloquear tablas está here
¡Espero que ayude!
Puede usar SHOW OPEN TABLES
para mostrar el estado de bloqueo de cada tabla. Más detalles en la página del documento del comando están http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html .
Utilice SHOW OPEN TABLES
: http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html
Puedes hacer algo como esto
SHOW OPEN TABLES WHERE `Table` LIKE ''%[TABLE_NAME]%'' AND `Database` LIKE ''[DBNAME]'' AND In_use > 0;
para verificar cualquier tabla bloqueada en una base de datos.