Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Python:Was ist falsch an meinem Code von mehreren Prozessen, die in MySQL eingefügt werden?

Ja, wenn Sie 300 Millionen Zeilen per Bulk in dieselbe Tabelle einfügen, sollten Sie nicht versuchen, diese Einfügung zu parallelisieren. Alle Einfügungen müssen dieselben Engpässe durchlaufen:Aktualisieren des Index und Schreiben in die physische Datei auf der Festplatte. Diese Operationen erfordern exklusiven Zugriff auf die zugrunde liegenden Ressourcen (den Index oder den Festplattenkopf).

Sie fügen der Datenbank tatsächlich einen nutzlosen Overhead hinzu, der jetzt mehrere gleichzeitige Transaktionen verarbeiten muss. Dies verbraucht Speicher, erzwingt einen Kontextwechsel, lässt den Lesekopf der Festplatte ständig herumspringen und so weiter.

Fügen Sie alles in denselben Thread ein.

Es sieht so aus, als würden Sie tatsächlich Daten aus einer Art CSV-Datei importieren. Möglicherweise möchten Sie das integrierte LOAD DATA INFILE MySQL-Befehl, der genau für diesen Zweck entwickelt wurde. Bitte beschreiben Sie Ihre Quelldatei, wenn Sie Hilfe beim Optimieren dieses Befehls benötigen.