MySQL: ¿Truncar tabla dentro de la transacción?
Tengo una tabla InnoDB que debe volver a llenarse cada diez minutos en cualquier lugar de 60k a 200k registros. Nuestro enfoque hasta este punto ha sido el siguiente:
Desactivar Autocommitir Truncar la tabla Realizar consultas seleccionadas y cálculos adicionales (usando PHP)Insertar nuevos registrosCometeSin embargo, después de realizar la operación Truncar, los datos se eliminan de inmediato y ya no están disponibles en la Interfaz de usuario. Para nuestros usuarios, esto ha sido bastante desconcertante, aunque en unos 30 segundos más o menos el script encuentra la operación Commit y la tabla se vuelve a llenar.
Pensé que tal vez podría concluir toda la operación,inclus elTruncate
, en una transacción, y que esto podría reducir el tiempo durante el cual la tabla aparece vacía para los usuarios. Entonces cambiéSET AUTOCOMMIT=0
aSTART TRANSCATION
.
Yikes! Esto tuvo el opuesto del efecto deseado! Ahora elTRUNCATE
a operación @ todavía ocurre al comienzo del script, pero requieremucho mas larg para ejecutar realmente elINSERT
operaciones dentro de la transacción, de modo que para cuando elCOMMIT
a operación @ se lleva a cabo y los datos en la tabla están disponibles nuevamente, han sido casi¡diez minutos
¿Qué podría causar esto? A decir verdad, no esperaba ningún cambio en absoluto, porque tenía la impresión de que iniciar una transacción básicamente apagaAutocommit
¿¿de todas formas?