Le moteur MySQL/MariaDB a peu de parallélisation lors des insertions en bloc. Il ne peut utiliser qu'un seul cœur de processeur par LOAD DATA
déclaration. Vous pouvez probablement surveiller l'utilisation du processeur pendant le chargement pour voir qu'un cœur est pleinement utilisé et qu'il ne peut fournir qu'une quantité limitée de données de sortie, laissant ainsi le débit du disque sous-utilisé.
La version la plus récente de MySQL a une nouvelle fonctionnalité de chargement parallèle :https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-parallel-table.html . Cela semble prometteur mais n'a probablement pas encore reçu beaucoup de commentaires. Je ne suis pas sûr que cela aiderait dans votre cas.
J'ai vu diverses listes de contrôle sur Internet qui recommandaient d'avoir des valeurs plus élevées dans les paramètres de configuration suivants :log_buffer_size
, log_file_size
, write_io_threads
, bulk_insert_buffer_size
. Mais les avantages n'étaient pas très prononcés lorsque j'ai effectué des tests de comparaison (peut-être 10 à 20 % plus rapides que simplement innodb_buffer_pool_size
étant assez grand).