Я завантажую файл 100 Гб через INFILE ЗАВАНТАЖЕННЯ ДАНИХ. Я мав добрий успіх з MyISAM, кілька годин і зробив.
Я зараз пробую це за допомогою InnoDB. Навантаження починається швидко зі швидкістю понад 10 Мб / сек (спостерігається зростання файлу таблиці, file_per_table
увімкнено).
Але після приблизно 5 ГБ даних він сповільнюється до діапазону 2-4 МБ / сек, оскільки я отримую понад 20 ГБ, він знижувався приблизно в 2 МБ / сек.
Розмір пулів InnoDB - 8G. Перед виконанням команди LOAD DATA INFILE я зробив наступне:
SET @@session.sql_log_bin=0;
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
alter table item_load disable keys;
//Run LOAD DATA INFILE....
Я не бачу причини, чому вона починається добре і з часом сповільнюється.
Також, використовуючи ті самі налаштування, я запустив ту саму команду LOAD DATA INFILE з таблицею за допомогою InnoDB та MyISAM та тестовим набором даних 5 Гб, MyISAM був у 20 разів швидшим:
InnoDB:
mysql> LOAD DATA CONCURRENT LOCAL INFILE '/tmp/item' REPLACE INTO TABLE item_load;
Query OK, 2630886 rows affected, 6 warnings (21 min 25.38 sec)
Records: 2630886 Deleted: 0 Skipped: 0 Warnings: 6
MyISAM:
mysql> LOAD DATA CONCURRENT LOCAL INFILE '/tmp/item' REPLACE INTO TABLE item_load;
Query OK, 2630886 rows affected, 6 warnings (1 min 2.52 sec)
Records: 2630886 Deleted: 0 Skipped: 0 Warnings: 6
Що б я ще не міг спробувати? Двигун MyISAM здатний набагато краще підтримувати швидкість навантаження.
Додаткові дані:
Я намагався завантажувати файли окремо, різниці немає.
До речі, у мене 150 файлів по 500 МБ кожен, в кожному файлі клавіші сортуються.
Після отримання 40 Гб за ніч, через 12 годин, швидкість навантаження знизилася до 0,5 МБ / сек, тобто операція, практично кажучи, неможлива.
Я не знайшов жодних інших відповідей на подібні запитання на інших форумах, мені здається, що InnoDB не підтримує завантаження великої кількості даних у таблиці розміром декілька ГБ.