Mysql
 sql >> Database >  >> RDS >> Mysql

Python:cosa c'è che non va nel mio codice di processi multipli che si inseriscono in MySQL?

Sì, se stai inserendo in blocco 300 milioni di righe nella stessa tabella, non dovresti provare a parallelizzare questo inserimento. Tutti gli inserti devono attraversare gli stessi colli di bottiglia:aggiornamento dell'indice e scrittura nel file fisico sul disco rigido. Queste operazioni richiedono l'accesso esclusivo alle risorse sottostanti (l'indice o la testina del disco).

In realtà stai aggiungendo un sovraccarico inutile al database che ora deve gestire diverse transazioni simultanee. Ciò consuma memoria, forza il cambio di contesto, fa saltare continuamente la testina di lettura del disco e così via.

Inserisci tutto nello stesso thread.

Sembra che tu stia effettivamente importando dati da una specie di file CSV. Potresti voler utilizzare il LOAD DATA INFILE Comando MySQL, progettato proprio per questo scopo. Descrivi il tuo file sorgente se hai bisogno di aiuto per ottimizzare questo comando.