MySQL/MariaDB-motoren har lidt parallelisering, når man laver bulk-indsatser. Den kan kun bruge én CPU-kerne pr. LOAD DATA
udmelding. Du kan sandsynligvis overvåge CPU-udnyttelsen under belastning for at se, at en kerne er fuldt udnyttet, og den kan kun levere så meget af outputdata - og dermed efterlade diskens gennemløb underudnyttet.
Den seneste version af MySQL har en ny parallel indlæsningsfunktion:https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-parallel-table.html . Det ser lovende ud, men har sandsynligvis ikke fået meget feedback endnu. Jeg er ikke sikker på, at det ville hjælpe i dit tilfælde.
Jeg så forskellige tjeklister på internettet, der anbefalede at have højere værdier i følgende konfigurationsparametre:log_buffer_size
, log_file_size
, write_io_threads
, bulk_insert_buffer_size
. Men fordelene var ikke særlig udtalte, da jeg udførte sammenligningstests (måske 10-20 % hurtigere end bare innodb_buffer_pool_size
er stor nok).