El motor MySQL/MariaDB tiene poca paralelización al realizar inserciones masivas. Solo puede usar un núcleo de CPU por LOAD DATA
declaración. Probablemente pueda monitorear la utilización de la CPU durante la carga para ver que un núcleo se utiliza por completo y puede proporcionar solo una parte de los datos de salida, lo que deja el rendimiento del disco infrautilizado.
La versión más reciente de MySQL tiene una nueva característica de carga paralela:https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-tabla-paralela.html . Parece prometedor, pero probablemente aún no ha recibido muchos comentarios. No estoy seguro de que ayude en tu caso.
Vi varias listas de verificación en Internet que recomendaban tener valores más altos en los siguientes parámetros de configuración:log_buffer_size
, log_file_size
, write_io_threads
, bulk_insert_buffer_size
. Pero los beneficios no fueron muy pronunciados cuando realicé pruebas de comparación (tal vez un 10-20 % más rápido que solo innodb_buffer_pool_size
siendo lo suficientemente grande).