Если вы загружаете данные в одну или несколько транзакций, большую часть времени, скорее всего, будет потрачено на создание индексов (в зависимости от схемы таблицы).
Не выполняйте большое количествонебольшие вставки с включенной автоматической фиксацией, которые снижают производительность при синхронизации для каждого коммита.
Если ваша таблица больше (или почти так же велика), как буферный пул innodb, у вас проблемы;таблицу, которая не может вписаться в ram с ее индексами, нельзя вставить эффективно, так как для ее вставки необходимо выполнить READS.Это сделано для того, чтобы можно было обновить существующие индексные блоки.
Помните, что запись на диск в порядке (они в основном последовательные, и у вас есть рейдовый контроллер с батарейным питанием, верно?), Но чтение идет медленно и нужноследует избегать.
В итоге
- Выполните вставку в небольшом количестве транзакций большого размера, скажем, по 10–100 тыс. строк или каждой.Не делайте транзакции слишком большими, иначе вы исчерпаете логи.
- Получите достаточно памяти, чтобы ваша таблица поместилась в памяти;установите буферный пул innodb соответствующим образом (вы используете x86_64, верно?)
- Не беспокойтесь о том, что операция занимает много времени, так как благодаря MVCC ваше приложение сможет работать с предыдущими версиямистроки, предполагающие, что он только читает.
Не вносите никаких оптимизаций, перечисленных выше, это, вероятно, пустая трата времени (не поверьте мне на слово - сравните работу операции в тестесистема в вашей лаборатории с / без них).
Отключение уникальных проверок активно опасно, так как в итоге вы получите неработающие данные.