Mysql
 sql >> Base de données >  >> RDS >> Mysql

Améliorer les performances de mysql LOAD DATA / mysqlimport ?

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).