tengo la siguiente consulta (todas las tablas son InnoDB)cómo evitar el estancamiento en MySQL
INSERT INTO busy_machines(machine)
SELECT machine FROM all_machines
WHERE machine NOT IN (SELECT machine FROM busy_machines)
and machine_name!='Main'
LIMIT 1
¿Qué hace que un punto muerto cuando lo ejecuto en hilos, obviamente debido a la SELECT interna, ¿verdad?
El error que consigo es:
(1213, 'Deadlock found when trying to get lock; try restarting transaction')
¿Cómo puedo evitar el estancamiento? ¿Hay alguna manera de cambiar a la consulta para que funcione, o tengo que hacer algo más?
El error no ocurre siempre, por supuesto, solo después de ejecutar esta consulta muchas veces y en varios hilos.
¿Usted está experimentando estancamiento o la contención de bloqueo? – Quassnoi
@Quassnoi: Agregué la información a la pregunta - (1213, 'Interbloqueo encontrado al intentar obtener el bloqueo; intente reiniciar la transacción') – olamundo
'mostrar estado de innodb' describiría brevemente la causa del último interbloqueo – jonny