sql >> Database >  >> RDS >> Mysql

Moet 100000 rijen in mysql invoegen met slaapstand in minder dan 5 seconden

Nadat ik alle mogelijke oplossingen had geprobeerd, vond ik eindelijk een oplossing om 100.000 rijen in te voegen binnen 5 seconden!

Dingen die ik heb geprobeerd:

1) Hibernate/database's AUTOINCREMENT/GENERATED id's vervangen door zelf gegenereerde ID's met behulp van AtomicInteger

2) Batch_inserts inschakelen met batch_size=50

3) Cache leegmaken na elk 'batch_size' aantal persist() calls

4) multithreading (heb deze niet geprobeerd)

Wat uiteindelijk werkte, was het gebruik van een native multi-insert query en 1000 rijen invoegen in één sql-invoegquery in plaats van persist() . te gebruiken op elke entiteit. Voor het invoegen van 100.000 entiteiten maak ik een native query zoals deze "INSERT into MyTable VALUES (x,x,x),(x,x,x).......(x,x,x)" [1000 rij-inserts in één sql insert-query]

Nu duurt het ongeveer 3 seconden om 100.000 records in te voegen! De bottleneck was dus de orm zelf! Voor bulk-inserts is het enige dat lijkt te werken native insert-query's!



  1. Wat is de grootte van de kolom van int(11) in mysql in bytes?

  2. Alternatieve Oracle-stuurprogramma's voor .net

  3. Hoeveel geheugen wordt ingenomen door een null-waarde in een DB?

  4. Hoe $_POST een dynamisch toegewezen waarde in PHP?