Pregunta

Tengo una base de datos MySQL con 21M Records y estoy tratando de hacer una actualización en aproximadamente 1M Records, pero la consulta falla con ERROR 1206 (HY000): The total number of locks exceeds the lock table size.

¿Es posible actualizar la tabla sin adquirir bloqueos?

No tengo acceso para cambiar los parámetros de configuración de MySQL como innodb_buffer_pool_size. ¿Hay una forma diferente de lograr lo mismo?

Gracias

EDITAR:

  1. Lo he probado en lotes de 5000, funciona varias veces, pero recibo el mismo error
  2. He probado las mesas de bloqueo para bloquear toda la mesa y aún así no funciona.
¿Fue útil?

Solución

Creo que puedes usar la cláusula de límite para hacer las actualizaciones en lotes.

Otros consejos

Intente bloquear a nivel de mesa en lugar del nivel de fila. Usar LOCK TABLES MyTable WRITE. Esto podría resolver el problema. ¡Sin embargo, no hay garantías! ¡No olvides desbloquear las tablas tampoco!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top