С MySQL, как долго «ALTER TABLE… DISABLE KEYS;» последнее заявление?

12

Если вы отключите ключи (приостановив индексирование) в таблице mysql INNODB, как долго будет длиться этот параметр?

Для запроса типа:

ALTER TABLE users DISABLE KEYS;

Ключи снова включаются в конце скрипта? или они сохраняются до тех пор, пока вы не включите индексацию обратно?

Дэниэл Бердсли
источник
Этот вопрос заслуживает +1 за то, что он помог другим понять, что такое DISABLE KEYS, ENABLE KEYS и InnoDB.
RolandoMySQLDBA
См. Также dba.stackexchange.com/a/76590/1653
Мэтью Рид,

Ответы:

7

Fine Manual (который стоит прочитать) предполагает, что действие этого оператора продолжается до тех пор, пока ALTER TABLE ... ENABLE KEYSне выполнится соответствующий оператор.

ombble
источник
6

В действительности, ALTER TABLE ... ОТКЛЮЧИТЬ КЛАВИШИ и ALTER TABLE ... ENABLE KEYS не работают !!!!

Я обратился к этому еще в 13 февраля 2011 года.

Я немного покопался и узнал от материнской компании InnoDB, InnoBase Oy (до того, как меня сделали 7 из 9 в Oracle Borg), что это действительно так.

Эта ссылка предлагает сделать DISABLE KEYS и отключить внешние ключи вместе. Хотя я думаю, что оба излишни, это, видимо, сработало для кого-то

ОБНОВЛЕНИЕ 2011-07-18 12:35 ПО ВОСТОЧНОМУ ВРЕМЕНИ

Это очень хороший вопрос, потому что он раскрывает зло, оставшееся в MySQL. Программа mysqldump вслепую отбрасывает DISABLE KEYS и ENABLE KEYS вокруг создания и загружает каждую таблицу независимо от механизма хранения. Поскольку DISABLE KEYS и ENABLE KEYS не работают (в лучшем случае не оказывает влияния) на таблицы InnoDB, так как он работает правильно для MyISAM, этот неизвестный факт должен быть лучше задокументирован сообществом MySQL. О да, MySQL находится в центре Галактической Империи, известной как Oracle. Я не буду затаить дыхание на предстоящие изменения документации.

RolandoMySQLDBA
источник
3
Делать заявление - это одно. Выкрикивать это, используя и заглавные буквы и жирный шрифт, является несколько чрезмерным и совершенно ненужным.
Джон Гарденье
1
@John: извините, я выгляжу чрезмерно восторженным. Я не сержусь ни на кого. ALTER TABLE DISABLE / ENABLE KEYS против InnoDB плохо документирован. Oracle тоже не собирается улучшать вещи.
RolandoMySQLDBA
@RolandoMySQLDBA есть ли обходной путь, чтобы mysqldump не помещал DISABLE KEYS и ENABLE KEYS в файл дампа?
Пахнин