2012-04-19 5 views
34

У меня есть файл SQL, содержащий две таблицы с примерно 600 000 строк. Вчера я попытался импортировать файл в мою базу данных MySQL на Fedora 16, и потребовалось более 2 часов, чтобы импортировать файл. На моем ПК для Windows это заняло 7 минут. Мои машины Linux и Windows имеют точно такое же оборудование. Несколько моих знакомых тоже попробовали, и у них был подобный опыт.Почему импорт SQL настолько медленный?

Команда, которой мы пользовались, была: mysql -u root database_name < sql_file.sql.

Почему существует такая разница в скорости?

+0

Аналогичные типы таблиц (INNODB/MYISAM/...)? –

+0

Да, типы таблиц одинаковы: Innodb –

+0

Вы проверили mysqlimport? См. Http://stackoverflow.com/questions/2956407/mysql-console-slow-on-import-of-huge-sql-files – rorycl

ответ

65

Моя ставка заключается в том, что Fedora 16 выполняет семантику транзакций/синхронизации, а Windows - нет. Если вы делаете математику, 600 000 обновлений за два часа - 5000 в минуту. Это тот же порядок величины, что и скорость вращения диска.

Вы можете попробовать добавить SET autocommit=0; в начало вашего файла импорта и COMMIT; до конца. См. this page для получения дополнительной информации.

+2

Это имело огромное значение! Просто попробовал еще раз, и общее время для импорта было менее 3 минут. Танков много :) –

+0

Разница астрономическая. Я ждал 20 минут в файле дампа 27 МБ, прежде чем начинать с вашего предложения. Потребовалось меньше минуты спустя. Отличный ответ! –

+0

Это сработало хорошо. В противном случае также будет изменена форма ввода входного файла с использованием объемных вставок. Благодарю. –

3

Почему вы не экспортировать файл .sql в BULK INSERT опции и импортировать его, попробуйте эти варианты, принимая резервную копию с помощью туздЫшпр

--extended-insert: используйте операторы вставки нескольких строк

--quick: не делать буферизация данных строк, хорошо, если таблицы большие

Примечание: Убедитесь, что вы должны увеличить значение max_allowed_packet = 32M или больше в my.cnf файл перед генерацией .sql файл.

+0

Спасибо за ваш ответ, я проверю его. –

+1

@LarsSteen Наконечник Махеша Патиля имеет значение? – Alex

+0

Нет. Не имеет большого значения. –

Смежные вопросы