Con MySQL, ¿cuánto tiempo dura una "ALTER TABLE ... DISABLE KEYS"? última declaración?

12

Si deshabilita las claves (suspender la indexación) en una tabla mysql INNODB, ¿cuánto dura esa configuración?

Para una consulta como:

ALTER TABLE users DISABLE KEYS;

¿Se vuelven a habilitar las teclas al final del script? ¿o duran hasta que vuelva a activar explícitamente la indexación?

Daniel Beardsley
fuente
Esta pregunta merece un +1 por ayudar a otros a darse cuenta de algo sobre DISABLE KEYS, ENABLE KEYS e InnoDB.
RolandoMySQLDBA
Ver también dba.stackexchange.com/a/76590/1653
Matthew Lee

Respuestas:

7

El Fine Manual (que vale la pena leer) sugiere que el efecto de esa declaración dura hasta ALTER TABLE ... ENABLE KEYSque se ejecuta una declaración correspondiente .

womble
fuente
6

En realidad, ¡ ALTERAR TABLA ... DESACTIVAR TECLAS y ALTERAR TABLA ... ACTIVAR TECLAS no funcionan!

Abordé esto el 13 de febrero de 2011.

Investigué un poco más y descubrí de la compañía madre de InnoDB, InnoBase Oy (antes de ser 7 de 9 en el Oracle Borg), que este es el caso.

Este enlace sugiere hacer DISABLE KEYS y deshabilitar claves foráneas juntas. Aunque creo que ambos son innecesarios, esto aparentemente funcionó para alguien.

ACTUALIZACIÓN 2011-07-18 12:35 EDT

Esta es una muy buena pregunta porque expone un mal que quedó en MySQL. El programa mysqldump deja ciegamente DESACTIVAR CLAVES y ACTIVAR CLAVES alrededor de la creación y carga sobre cada tabla sin tener en cuenta el motor de almacenamiento. Dado que DISABLE KEYS y ENABLE KEYS no funcionan (en el mejor de los casos no tiene ningún efecto) en las tablas de InnoDB, ya que funciona correctamente para MyISAM, este hecho desconocido debería estar mejor documentado por la comunidad MySQL. Oh sí, MySQL está en el medio del Imperio Galáctico conocido como Oracle. No voy a contener la respiración por los cambios de documentación que se avecinan.

RolandoMySQLDBA
fuente
3
Hacer una declaración es una cosa. Gritarlo usando ambas mayúsculas y negrita es algo excesivo y completamente innecesario.
John Gardeniers
1
@ John: Lamento parecer demasiado entusiasta. No estoy enojado con nadie. ALTERAR TABLA DESACTIVAR / ACTIVAR TECLAS contra InnoDB no está bien documentado. Oracle tampoco va a mejorar las cosas.
RolandoMySQLDBA
@RolandoMySQLDBA ¿hay alguna solución para evitar que mysqldump ponga DISABLE KEYS y ENABLE KEYS en el archivo de volcado?
pahnin