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?
mysql
database
database-administration
indexing
Daniel Beardsley
quelle
quelle
Antworten:
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 KEYS
Anweisung ausgeführt wird.quelle
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.
quelle