Wie lange dauert bei MySQL eine Anweisung „ALTER TABLE… DISABLE KEYS;“?

12

Wenn Sie die Schlüssel in einer mysql INNODB-Tabelle deaktivieren (die Indizierung aussetzen), wie lange dauert diese Einstellung?

Für eine Abfrage wie:

ALTER TABLE users DISABLE KEYS;

Werden die Schlüssel am Ende des Skripts wieder aktiviert? oder halten sie so lange an, bis Sie die Indizierung explizit wieder aktivieren?

Daniel Beardsley
quelle
Diese Frage verdient eine +1, um anderen zu helfen, etwas über DISABLE KEYS, ENABLE KEYS und InnoDB zu realisieren.
RolandoMySQLDBA
Siehe auch dba.stackexchange.com/a/76590/1653
Matthew Read,

Antworten:

7

Das Fine Manual (das es wert ist, gelesen zu werden) legt nahe, dass die Wirkung dieser Anweisung so lange anhält, bis eine entsprechende ALTER TABLE ... ENABLE KEYSAnweisung ausgeführt wird.

womble
quelle
6

In Wirklichkeit funktionieren ALTER TABLE ... DISABLE KEYS und ALTER TABLE ... ENABLE KEYS nicht !!!!

Ich habe das bereits am 13. Februar 2011 angesprochen.

Ich habe einige zusätzliche Grabungen durchgeführt und von InnoDBs Mutterfirma InnoBase Oy (bevor ich im Oracle Borg auf 7 von 9 kam) herausgefunden, dass dies tatsächlich der Fall ist.

Dieser Link schlägt vor, DISABLE KEYS und Foreign Keys gemeinsam zu deaktivieren. Obwohl ich beide für unnötig halte, hat dies anscheinend für jemanden funktioniert.

UPDATE 2011-07-18 12:35 EDT

Dies ist eine sehr gute Frage, da sie ein Übel aufdeckt, das in MySQL übrig geblieben ist. Das mysqldump-Programm legt blindlings DISABLE KEYS und ENABLE KEYS für die Erstellung ab und lädt sie unabhängig von der Speicher-Engine über jede Tabelle. Da DISABLE KEYS und ENABLE KEYS für InnoDB-Tabellen nicht funktionieren (im besten Fall ohne Wirkung), da dies für MyISAM ordnungsgemäß funktioniert, sollte diese unbekannte Tatsache von der MySQL-Community besser dokumentiert werden. Oh ja, MySQL befindet sich mitten im galaktischen Imperium, das als Oracle bekannt ist. Ich werde nicht den Atem anhalten, wenn Änderungen an der Dokumentation anstehen.

RolandoMySQLDBA
quelle
3
Eine Erklärung abzugeben ist eine Sache. Das Ausschreien mit beiden Kappen und Fettdruck ist etwas übertrieben und völlig unnötig.
John Gardeniers
1
@ John: Es tut mir leid, dass ich übermäßig begeistert bin. Ich bin niemandem böse. ALTER TABLE DISABLE / ENABLE KEYS für InnoDB ist nicht gut dokumentiert. Oracle wird die Dinge auch nicht verbessern.
RolandoMySQLDBA
@RolandoMySQLDBA Gibt es eine Problemumgehung, um zu vermeiden, dass mysqldump DISABLE KEYS und ENABLE KEYS in die Dump-Datei schreibt?
Pahnin