2010-03-23 38 views

Respuesta

9

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 utilice un bloqueo de asesoramiento en primer lugar. 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.

2

Este article describe cómo obtener información sobre los recursos de MySQL bloqueados. mysqladmin debug también podría ser de alguna utilidad.

+1

está bien, pero ¿qué pasa si MyISAM está bloqueado? ovaciones – Marcin

+0

Lo siento, no puedo ayudarte. –

4

Usted puede crear su propia cerradura con GET_LOCK (lockName, tiempo de espera)

Si lo hace un GET_LOCK(lockName, 0) con un tiempo de 0 a cabo antes de bloquear las tablas y luego se sigue que con un RELEASE_LOCK(lockName) entonces todos los otros hilos de realizar una GET_LOCK() obtendrá un valor de 0 que les indicará que el bloqueo está retenido por otro hilo.

Sin embargo, esto no funcionará si no tiene todos los hilos llamando al GET_LOCK() antes de bloquear tablas. La documentación para bloquear tablas es here

Espero que ayude!

+1

esto solo funciona para cerraduras con nombre ¿qué pasa con las cerraduras sin nombre? – Marcin

+0

No se puede para cerraduras sin nombre –

42

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 son here.

0

La forma más sencilla es:

SHOW OPEN TABLES WHERE In_use > 0 

Usted obtiene la tabla bloqueada solamente de la base de datos actual.

Cuestiones relacionadas