MySQL загружает данные infile – ускорение?

иногда мне приходится повторно импортировать данные для проекта, таким образом, считывая около 3,6 миллиона строк в таблицу MySQL (в настоящее время InnoDB, но на самом деле я не ограничен этим движком). «Load data infile …» оказалось самым быстрым решением, однако оно имеет компромисс: – при импорте без ключей сам импорт занимает около 45 секунд, но создание ключа занимает много времени (уже работает 20 минут .. .). – выполнение импорта с помощью ключей на столе делает импорт намного медленнее

Существуют ключи над тремя полями таблицы, ссылаясь на числовые поля. Есть ли способ ускорить это?

Другая проблема: когда я завершаю процесс, который начал медленный запрос, он продолжает работать в базе данных. Есть ли способ завершить запрос без перезагрузки mysqld?

Большое спасибо DBa

если вы используете innodb и массовую загрузку, вот несколько советов:

сортируйте свой файл csv в порядке первичного ключа целевой таблицы: помните, что innodb использует кластерные первичные ключи, поэтому он будет загружаться быстрее, если он будет отсортирован!

типичные данные о загруженности данных i:

truncate ; set autocommit = 0; load data infile  into table 
... commit;

другие оптимизации, которые вы можете использовать для увеличения времени загрузки:

 set unique_checks = 0; set foreign_key_checks = 0; set sql_log_bin=0; 

разбивать файл csv на более мелкие куски

типичная статистика импорта, которую я наблюдал во время насыпных грузов:

 3.5 - 6.5 million rows imported per min 210 - 400 million rows per hour 

Это сообщение в блоге почти 3 года, но оно по-прежнему актуально и содержит некоторые полезные рекомендации по оптимизации производительности «LOAD DATA INFILE»:

http://www.mysqlperformanceblog.com/2007/05/24/predicting-how-long-data-load-would-take/

InnoDB – неплохой двигатель. Однако он очень полагается на «настройку». Одно дело, что если ваши вставки не находятся в порядке увеличения первичных ключей, innoDB может занять немного больше времени, чем MyISAM. Это можно легко преодолеть, установив более высокий файл innodb_buffer_pool_size. Мое предложение состоит в том, чтобы установить его на 60-70% от вашей общей ОЗУ на специальном компьютере MySQL.

  • Как индексировать векторную последовательность в векторной последовательности
  • Рекурсия или итерация?
  • Является ли оператор неравенства быстрее, чем оператор равенства?
  • Любой рекомендуемый учебник по профилированию Java?
  • Каков наилучший способ установить регистр в ноль в сборке x86: xor, mov или или?
  • Безопасно ли читать конец конца буфера на одной странице на x86 и x64?
  • Ошибка производительности для vector :: size () в цикле
  • Каковы реальные накладные расходы на try / catch в C #?
  • Лучше ли использовать std :: memcpy () или std :: copy () в терминах производительности?
  • Как перегружать std :: swap ()
  • Анимированная анимация Swing
  • Давайте будем гением компьютера.