sql >> Databáze >  >> RDS >> Mysql

Python:Co je špatného na mém kódu s více procesy vkládáním do MySQL?

Ano, pokud hromadně vkládáte 300 milionů řádků do stejné tabulky, neměli byste se snažit toto vkládání paralelizovat. Všechny vložky musí projít stejnými úzkými hrdly:aktualizací indexu a zápisem do fyzického souboru na pevném disku. Tyto operace vyžadují výhradní přístup k základním zdrojům (indexu nebo hlavě disku).

Ve skutečnosti přidáváte nějakou zbytečnou režii na databázi, která nyní musí zpracovávat několik souběžných transakcí. To spotřebovává paměť, vynucuje přepínání kontextu, čtecí hlava disku neustále přeskakuje a tak dále.

Vložte vše do stejného vlákna.

Vypadá to, že ve skutečnosti importujete data z určitého druhu souboru CSV. Možná budete chtít použít vestavěný LOAD DATA INFILE Příkaz MySQL, určený právě pro tento účel. Pokud potřebujete pomoc s vyladěním tohoto příkazu, popište svůj zdrojový soubor.




  1. Seskupte data ve smyčce foreach

  2. PHP a MySQL - jak se vyhnout heslu ve zdrojovém kódu?

  3. Existuje operátor postgres NEJBLIŽŠÍ?

  4. Webové formuláře ASP.NET a MySql Entity Framework:Vnořené transakce nejsou podporovány