Файлы CSV импорта MySQL действительно замедляются

Я пытаюсь импортировать файлы CSV в таблицу, но это было очень медленно. У меня есть приблизительно 1 000 файлов с размером файла 40 МБ каждый. Каждый раз, когда я пытаюсь импортировать его, я вижу с, например, инструментальными средствами MySQL, что это вставляет в уровень приблизительно 30 - 60 строк в секунду. Это возьмет возрасты, прежде чем al мои файлы будут обработаны. Как я могу ускорить это? Я уже изменил mysql.cnf файл к следующей конфигурации, которая, к сожалению, не ускоряет его:

/etc/mysql/conf.d/mysql.cnf

[mysqld]
innodb_buffer_pool_size=12G
innodb_io_capacity = 2000
innodb_read_io_threads = 48
innodb_thread_concurrency = 0
innodb_write_io_threads = 48
innodb_buffer_pool_size=12G
innodb_log_file_size = 512M
max_connections = 1000
max_allowed_packet = 128M
#key_buffer = 1000M
bulk_insert_buffer_size = 1024M
innodb_doublewrite = 0
innodb_flush_log_at_trx_commit = 2
key_buffer_size = 4000M

Это действительно говорит, что 12G настроен в InnoDB по данным PHPMyAdmin, таким образом, я могу безопасно подтвердить, что конфигурация, по крайней мере, работает.

Спецификации в случае, если необходимый:

OS: Ubuntu 18.04
CPU: 6 cores, 12 threads @ 4.5 GHz
RAM: 32 GB DDR4 @ 3.2 GHz
SSD: 1 TB NVME @ 3.5 GB/s Read & 3.3 GB/s Write
3
задан 10 March 2019 в 22:48

2 ответа

Необходимо взглянуть на LOAD DATA функция MySQL, или mysqlimport инструмент.

Те две функции по сообщениям в 20-30 раз быстрее, чем insert'луг один за другим, который принес бы Вам по крайней мере до 500-1000 строк в секунду.

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

5
ответ дан 1 December 2019 в 13:22

Оказалось, что кодирование файла отличалось между каждым файлом. Некоторые файлы имели кодировку UTF-8, у некоторых было кодирование ISO 8859-1 (Latin1), которое заставило много программ брать возрасты для импорта из-за (я думаю), преобразование его в другое кодирование. Файл на 40 МБ теперь только занимает приблизительно 6 секунд для импорта вместо 48 минут.. Спасибо @vidarlo для предложения mysqlimport, который является, конечно, улучшением, но в целом улучшение времени достаточно хорошо для меня!

2
ответ дан 1 December 2019 в 13:22

Другие вопросы по тегам:

Похожие вопросы: