sql >> Database >  >> RDS >> Mysql

Python:Wat is er mis met mijn code van meerdere processen die in MySQL worden ingevoegd?

Ja, als u 300 miljoen rijen bulksgewijs in dezelfde tabel invoegt, moet u niet proberen deze invoeging parallel te laten lopen. Alle inserts moeten door dezelfde knelpunten gaan:het bijwerken van de index en het schrijven naar het fysieke bestand op de harde schijf. Deze bewerkingen vereisen exclusieve toegang tot de onderliggende bronnen (de index of de schijfkop).

Je voegt eigenlijk wat nutteloze overhead toe aan de database die nu verschillende gelijktijdige transacties moet verwerken. Dit verbruikt geheugen, dwingt contextwisseling, laat de schijfleeskop de hele tijd rondspringen, enzovoort.

Voeg alles in dezelfde thread in.

Het lijkt erop dat je eigenlijk gegevens importeert uit een soort CSV-bestand. Misschien wilt u de ingebouwde LOAD DATA INFILE MySQL-opdracht, speciaal voor dit doel ontworpen. Beschrijf je bronbestand als je hulp nodig hebt bij het afstemmen van deze opdracht.




  1. Hoe te ontsnappen aan de? (vraagteken) operator om Postgresql JSONB-type op te vragen in Rails

  2. Mysql-bestelnummer / teken gecombineerd

  3. Cascade verwijderen bij gebruik van overerving en ManyToOne-relatie met JPA

  4. Alleen weergaven exporteren in Postgres