Die MySQL/MariaDB-Engine hat wenig Parallelisierung bei Masseneinfügungen. Es kann nur ein CPU-Kern pro LOAD DATA
verwendet werden Aussage. Sie können wahrscheinlich die CPU-Auslastung während der Belastung überwachen, um zu sehen, dass ein Kern voll ausgelastet ist und nur eine bestimmte Menge an Ausgabedaten liefern kann – wodurch der Plattendurchsatz nicht ausgelastet bleibt.
Die neueste Version von MySQL hat eine neue parallele Ladefunktion:https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-parallel-table.html . Es sieht vielversprechend aus, hat aber wahrscheinlich noch nicht viel Feedback erhalten. Ich bin mir nicht sicher, ob es in Ihrem Fall helfen würde.
Ich habe im Internet verschiedene Checklisten gesehen, die empfohlen haben, höhere Werte in den folgenden Konfigurationsparametern zu haben:log_buffer_size
, log_file_size
, write_io_threads
, bulk_insert_buffer_size
. Aber die Vorteile waren nicht sehr ausgeprägt, als ich Vergleichstests durchführte (vielleicht 10-20 % schneller als nur innodb_buffer_pool_size
groß genug).