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?
mysql
database
database-administration
indexing
Daniel Beardsley
la source
la source
Réponses:
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 KEYS
instruction correspondante soit exécutée.la source
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.
la source