Индексы, замедляющие вставки (невозможно использовать Explain Insert для анализа)

У меня есть база данных MySQL, что я анализирую файлы из журнала и вводить их внутри. Пока включение простого файла 4 Мб в базу данных может занять около 4 минут, чтобы вставить! и у меня есть около 10.000 таких файлов для обработки. Сначала я подумал, что это мой скрипт, но после дальнейшего изучения я понял, что это может быть связано с индексами. У меня есть таблица с 4 столбцами, 1 первичным ключом и 2 внешними ключами, которые по умолчанию являются индексами. Из этого можно узнать, влияют ли индексы на производительность вставки? Кажется, я не могу использовать Explain Insert с mysql, поэтому я не знаю больше информации, чтобы предоставить. Я смущен, если я должен уронить индексы, но я не знаю, как не вызвать катастрофы.

1 ответ

INSERT должен обновить все индексы. Он также должен проверить все ограничения внешнего ключа, что требует поиска в индексах других таблиц.

Проверка внешнего ключа может быть тем, что вас тормозит. Если вы уверены, что все данные, которые вы вставляете, чистые, вы можете временно отключить эти проверки во время массовой вставки:

SET FOREIGN_KEY_CHECKS = 0;
INSERT ...
INSERT ...
...
SET FOREIGN_KEY_CHECKS = 1;

Документация

Другие вопросы по тегам