Почему импорт SQL настолько медленный?
У меня есть файл SQL, содержащий две таблицы с примерно 600 000 строк. Вчера я попытался импортировать файл в мою базу данных MySQL на Fedora 16, и потребовалось более 2 часов, чтобы импортировать файл. На моем ПК для Windows это заняло 7 минут. Мои машины Linux и Windows имеют точно такое же оборудование. Несколько моих знакомых тоже попробовали, и у них был аналогичный опыт.
Команда, которую мы использовали, была: mysql -u root database_name < sql_file.sql
.
Почему существует такая разница в скорости?
Ответы
Ответ 1
Моя ставка заключается в том, что Fedora 16 выполняет семантику транзакций/синхронизации, а Windows - нет. Если вы делаете математику, 600 000 обновлений за два часа - 5000 в минуту. Это тот же порядок величины, что и скорость вращения диска.
Вы можете попробовать добавить SET autocommit=0;
в начало вашего файла импорта и COMMIT;
до конца. Подробнее см. эту страницу.
Ответ 2
Почему вы не экспортируете файл .sql в качестве параметра BULK INSERT
и не импортируете его, попробуйте эти параметры, беря резервную копию с помощью mysqldump
--extended-insert
: использование операторов вставки нескольких строк
--quick
: не выполнять буферизацию данных строки, хорошо, если таблицы большие
Примечание.. Прежде чем генерировать файл .sql, убедитесь, что вы должны увеличить значение max_allowed_packet
= 32M или более в файле my.cnf.