update lock from for ejemplo and mysql locking

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!