MySQL/MariaDB-motorn har liten parallellisering när man gör bulk-insatser. Den kan bara använda en CPU-kärna per LOAD DATA
påstående. Du kanske övervakar CPU-användning under laddning för att se att en kärna är fullt utnyttjad och att den bara kan tillhandahålla så mycket utdata - vilket gör att diskens genomströmning blir underutnyttjad.
Den senaste versionen av MySQL har en ny funktion för parallell laddning:https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-parallel-table.html . Det ser lovande ut men har förmodligen inte fått så mycket feedback än. Jag är inte säker på att det skulle hjälpa i ditt fall.
Jag såg olika checklistor på internet som rekommenderade att ha högre värden i följande konfigurationsparametrar:log_buffer_size
, log_file_size
, write_io_threads
, bulk_insert_buffer_size
. Men fördelarna var inte särskilt uttalade när jag utförde jämförelsetester (kanske 10-20 % snabbare än bara innodb_buffer_pool_size
är tillräckligt stor).