Консоль MySQL замедляет импорт огромных файлов SQL - PullRequest
7 голосов
/ 02 июня 2010

Мой импорт SQL через консоль MySQL довольно медленный, и, поскольку наш файл SQL увеличивается с каждым днем, я хотел бы знать, есть ли какие-либо альтернативы, как импортировать файл SQL быстрее.

Переход на Oracle или другие системы невозможен, конфигурация должна оставаться прежней.

В настоящее время файл SQL: 1,5 ГБ. Я на WAMP с Apache 2.2.14, PHP 5.2.11 и MySQL 5.1.41.

Возможно, проблема здесь, импорт осуществляется простым:

mysql -u username -p dbname < sqlfilename.sql

Есть предложения?

Ответы [ 4 ]

5 голосов
/ 02 июня 2010

Включение индексов во время импорта замедлит работу вашего сервера. ALTER TABLE имя_таблица DISABLE KEYS; и использование ..ENABLE KEYS до и после импорта улучшит скорость импорта, но потребуется некоторое время для повторного создания индексов, так что в конечном итоге это может не дать большого прироста скорости.

Кроме того, возможно, использование таблиц myisam (в отличие от innodb с опциями ссылочной целостности) обычно дает лучшую производительность, поскольку не требуются затраты на ссылочную целостность.

Лично я не использую оператор импорта из консоли mysql, но импортирую файлы sql, используя mysql -uUSER -pPASS DBNAME < file.sql, и он хорошо работает для меня.

Надеюсь, это поможет.

5 голосов
/ 31 октября 2012

Попробуйте это http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html

Возможно, проблема с автокоммитом, выключите ее и посмотрите, что произойдет.

SET autocommit=0 ; source <your dump file> ; COMMIT ;
2 голосов
/ 30 сентября 2016

Отключение автоматической фиксации - это первая из серии рекомендаций, приведенных в Массовая загрузка данных для таблиц InnoDB для ускорения операций восстановления для MySQL.

Вместо того, чтобы автоматически отключать автокоммит во время восстановления, вы уже можете выгружать данные MySQL таким образом, чтобы все необходимые операторы были включены прямо в ваш файл SQL.

Параметр командной строки для mysqldump - --no-autocommit. Вы также можете добавить --opt, который устанавливает комбинацию других параметров для ускорения операций восстановления.

Вот пример полной командной строки mysqldump, которую я использую, содержащей --no-autocommit и --opt:

mysqldump -hlocalhost -uMyUser -p'MyPassword' --no-autocommit --opt --default-character-set=utf8 --quote-names  MyDbName  >  dump.sql

Подробнее об этих параметрах см. Справочник mysqldump

0 голосов
/ 02 июня 2010

Я не уверен, что это решит вашу проблему, потому что я не уверен, где узкое место ... Однако я был действительно впечатлен бесплатным Toad для MySQL в качестве замены консоли управления MySQL. Он имеет отличные инструменты импорта и, как правило, намного лучше IMO, чем стандартная консоль управления MySQL.

...