Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perlu memasukkan 100000 baris di mysql menggunakan hibernate dalam waktu kurang dari 5 detik

Setelah mencoba semua solusi yang mungkin, saya akhirnya menemukan solusi untuk menyisipkan 100.000 baris di bawah 5 detik!

Hal yang saya coba:

1) Mengganti id AUTOINCREMENT/GENERATED hibernate/database dengan ID yang dibuat sendiri menggunakan AtomicInteger

2) Mengaktifkan batch_inserts dengan batch_size=50

3) Membersihkan cache setelah setiap jumlah 'batch_size' dari panggilan persisten()

4) multithreading (tidak mencoba yang ini)

Akhirnya yang berhasil adalah menggunakan kueri multi-insert asli dan menyisipkan 1000 baris dalam satu kueri penyisipan sql alih-alih menggunakan bertahan() pada setiap entitas. Untuk memasukkan 100.000 entitas, saya membuat kueri asli seperti ini "INSERT into MyTable VALUES (x,x,x),(x,x,x).......(x,x,x)" [1000 sisipan baris dalam satu kueri sisipan sql]

Sekarang dibutuhkan sekitar 3 detik untuk memasukkan 100.000 catatan! Jadi hambatannya adalah orm itu sendiri! Untuk penyisipan massal, satu-satunya hal yang tampaknya berhasil adalah kueri penyisipan asli!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php artisan migration throw [Pengecualian PDO] Tidak dapat menemukan driver - Menggunakan Laravel

  2. Pindahkan simpul dalam kumpulan bersarang

  3. PHP :Fungsi tidak terdefinisi mysql_connect()

  4. GALAT 1115 (42000):Kumpulan karakter tidak dikenal:'utf8mb4'

  5. SQLite dan pesanan khusus oleh