Как ускорить загрузку данных в InnoDB (LOAD DATA INFILE)?

Я хочу ускорить загрузку данных.

Я использую MySQL 5.5, InnoDB и имею 1M строк данных (файл 65Mb). Это занимает 5 минут.

Какие настройки и команды mysql влияют на скорость LOAD DATA INFILE для InnoDB?

Спасибо.


person Jean Louis    schedule 16.02.2011    source источник


Ответы (5)


Я могу порекомендовать эти настройки для улучшения времени загрузки:

  • innodb_doublewrite = 0
  • innodb_support_xa = 0
  • innodb_buffer_pool_size = (50-80% системной памяти)
  • innodb_log_file_size = (большое число - 256M и т. д.)
  • innodb_flush_log_at_trx_commit = 0

Помимо настроек, есть некоторые вещи, которые вы можете сделать самостоятельно:

  • Создавать индексы после загрузки (это новая оптимизация с плагином 5.5/InnoDB).
  • Отсортируйте файл данных перед загрузкой.
  • Разделите файл данных и загрузите его параллельно.
person Morgan Tocker    schedule 19.02.2011

Попробуйте удалить индексы и триггеры. Вы можете воссоздать их после загрузки. Также рассмотрите возможность использования некоторых параметров высокой нагрузки в my-huge.cnf вместо значений по умолчанию.

Еще несколько настроек производительности innodb:

http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/

person jspcal    schedule 16.02.2011

Это может быть не совсем то, что вы ищете, но это трюк, который я использовал в прошлом

ALTER TABLE TABLE_NAME DISABLE KEYS;
LOAD DATA INFILE ... ;
ALTER TABLE TABLE_NAME ENABLE KEYS;

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

person Sean Milheim    schedule 16.02.2011

Также убедитесь, что ведение двоичного журнала отключено, если это возможно.

person cool    schedule 16.01.2015

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

CREATE TABLE new LIKE live;
LOAD DATA ... INTO new;
RENAME TABLE live TO old, new TO live;
DROP TABLE old;

RENAME является «мгновенным» и атомарным, поэтому вы «никогда» не проигрываете, независимо от размера стола.

(Следовательно, вам не нужно так сильно беспокоиться об ускорении LOAD.)

person Rick James    schedule 05.12.2015