Итак, у меня есть большая таблица с немногим более 2 миллиардов записей и пятью ключами из нескольких столбцов.
Существует два способа ввода данных:
Метод 1
load data infile ...;
Метод 2
alter table disable keys;
load data infile ...;
alter table enable keys;
Если я начинаю с пустой таблицы, для 2 миллиардов записей метод 1 принимаетоколо 60 часов (по оценкам, может быть больше), в то время как метод 2 занимает 12 часов, чтобы вставить данные, и 3 часа, чтобы восстановить ключи.Пока все хорошо.
Однако, если у меня уже есть 2 миллиарда записей и я пытаюсь вставить дополнительные 5 миллионов, метод 1 занимает около 3 часов, а метод 2 - 30 минут, чтобы вставить данные, ицелых 7 часов воссоздавая ключи.Я подтвердил, что во время всей регенерации ключа он использовал Repair by sorting
, поэтому он не вернулся к Repair with keycache
.
Интересно, почему это так.MySQL утверждает, что отключение ключей очень хорошо для вставки больших объемов данных, но это, очевидно, зависит от контекста.Если он собирается восстановить все ключи с нуля, почему это не займет около 3 часов, как, например, когда я начал с пустой таблицы?или если он вставляет ключи один за другим, почему это не занимает около 3 часов, что и требуется для метода 1?
Комментарии приветствуются