sql >> Databasteknik >  >> RDS >> Mysql

Python :Vad är det för fel med att min kod för flera processer infogas i MySQL?

Ja, om du bulkinfogar 300 miljoner rader i samma tabell, bör du inte försöka parallellisera denna infogning. Alla inlägg måste gå igenom samma flaskhalsar:uppdatera indexet och skriva in i den fysiska filen på hårddisken. Dessa operationer kräver exklusiv åtkomst till de underliggande resurserna (indexet eller diskhuvudet).

Du lägger faktiskt till några värdelösa overhead på databasen som nu måste hantera flera samtidiga transaktioner. Detta förbrukar minne, tvingar fram kontextväxling, får skivans läshuvud att hoppa runt hela tiden och så vidare.

Infoga allt i samma tråd.

Det ser ut som att du faktiskt importerar data från en sorts CSV-fil. Du kanske vill använda den inbyggda LOAD DATA INFILE MySQL-kommandot, designat för just detta ändamål. Beskriv din källfil om du behöver hjälp med att ställa in det här kommandot.




  1. Hur gör man procent/totalt i SQL?

  2. Reproducera com.mysql.jdbc.exceptions.jdbc4.CommunicationsException med en inställning av Spring, hibernate och C3P0

  3. Hur beräknar man skillnaden i timmar (decimal) mellan två datum i SQL Server?

  4. Hitta en förälder på toppnivå i SQL