Avec MySQL, combien de temps dure une «ALTER TABLE… DISABLE KEYS;» dernière déclaration?

12

Si vous désactivez les clés (suspension de l'indexation) sur une table mysql INNODB, combien de temps dure ce paramètre?

Pour une requête comme:

ALTER TABLE users DISABLE KEYS;

Les clés sont-elles réactivées à la fin du script? ou durent-ils jusqu'à ce que vous réactiviez explicitement l'indexation?

Daniel Beardsley
la source
Cette question mérite un +1 pour aider les autres à réaliser quelque chose à propos des touches DISABLE, ENABLE KEYS et InnoDB.
RolandoMySQLDBA
Voir aussi dba.stackexchange.com/a/76590/1653
Matthew Lire le

Réponses:

7

Le Fine Manual (qui vaut bien la peine d'être lu) suggère que l'effet de cette instruction dure jusqu'à ce qu'une ALTER TABLE ... ENABLE KEYSinstruction correspondante soit exécutée.

womble
la source
6

En réalité, ALTER TABLE ... DISABLE KEYS et ALTER TABLE ... ENABLE KEYS ne fonctionnent pas !!!!

J'ai abordé cette question le 13 février 2011.

J'ai fait quelques recherches supplémentaires et j'ai découvert auprès de la société mère d'InnoDB, InnoBase Oy (avant de devenir 7 sur 9 dans l'Oracle Borg), que c'est effectivement le cas.

Ce lien suggère de désactiver les clés et de désactiver les clés étrangères ensemble. Bien que je pense que les deux ne sont pas nécessaires, cela a apparemment fonctionné pour quelqu'un.

MISE À JOUR 2011-07-18 12:35 EDT

C'est une très bonne question car elle expose un mal qui a été laissé dans MySQL. Le programme mysqldump dépose aveuglément DISABLE KEYS et ENABLE KEYS autour de la création et charge sur chaque table sans tenir compte du moteur de stockage. Étant donné que DISABLE KEYS et ENABLE KEYS ne fonctionnent pas (dans le meilleur des cas, n'a aucun effet) sur les tables InnoDB car il fonctionne correctement pour MyISAM, ce fait inconnu devrait être mieux documenté par la communauté MySQL. Oh oui, MySQL est au milieu de l'Empire Galactique connu sous le nom d'Oracle. Je ne retiendrai pas mon souffle sur les changements de documentation à venir.

RolandoMySQLDBA
la source
3
Faire une déclaration est une chose. Crier en utilisant à la fois des majuscules et des caractères gras est quelque peu excessif et totalement inutile.
John Gardeniers
1
@John: Je suis désolé d'avoir l'air trop enthousiaste. Je ne suis en colère contre personne. ALTER TABLE DISABLE / ENABLE KEYS contre InnoDB n'est pas bien documenté. Oracle ne va pas non plus améliorer les choses.
RolandoMySQLDBA
@RolandoMySQLDBA existe-t-il une solution de contournement pour éviter que mysqldump place DISABLE KEYS et ENABLE KEYS dans le fichier de vidage?
pahnin