Mysql
 sql >> Base de données >  >> RDS >> Mysql

Python :Qu'est-ce qui ne va pas avec mon code de multi-processus inséré dans MySQL ?

Oui, si vous insérez en bloc 300 millions de lignes dans la même table, vous ne devriez pas essayer de paralléliser cette insertion. Toutes les insertions doivent passer par les mêmes goulots d'étranglement :mise à jour de l'index et écriture dans le fichier physique sur le disque dur. Ces opérations nécessitent un accès exclusif aux ressources sous-jacentes (l'index ou la tête de disque).

Vous ajoutez en fait une surcharge inutile à la base de données qui doit maintenant gérer plusieurs transactions simultanées. Cela consomme de la mémoire, force le changement de contexte, fait sauter la tête de lecture du disque tout le temps, etc.

Insérez tout dans le même fil.

Il semble que vous importiez en fait des données à partir d'une sorte de fichier CSV. Vous pouvez utiliser le LOAD DATA INFILE Commande MySQL, conçue dans ce but précis. Veuillez décrire votre fichier source si vous avez besoin d'aide pour régler cette commande.