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

Pemetaan Hubungan Hibernasi/Percepat penyisipan batch

Strategi pembuatan ID sangat penting untuk penyisipan batch di Hibernate. Secara khusus, pembuatan IDENTITY biasanya tidak bekerja (perhatikan bahwa AUTO biasanya memetakan ke IDENTITAS juga). Ini karena selama penyisipan batch, Hibernate memiliki tanda yang disebut "requiresImmediateIdAccess" yang mengatakan apakah ID yang dihasilkan segera diperlukan atau tidak; jika demikian, pemrosesan batch dinonaktifkan.

Anda dapat dengan mudah melihat ini di log tingkat DEBUG saat tertulis "segera jalankan penyisipan identitas" - ini berarti ia telah melewati pemrosesan batch karena diberi tahu bahwa ID yang dihasilkan diperlukan segera setelah penyisipan.

Strategi pembuatan yang biasanya melakukan pekerjaan adalah TABLE dan SEQUENCE, karena Hibernate dapat membuat ID sebelumnya, sehingga memungkinkan penyisipan batch.

Cara cepat untuk mengetahui apakah penyisipan batch Anda berfungsi adalah dengan mengaktifkan log tingkat DEBUG karena BatchingBatcher akan secara eksplisit memberi tahu Anda ukuran batch yang dijalankannya ("Melaksanakan ukuran batch:" + batchSize ).

Selain itu, properti berikut ini penting untuk mencapai penyisipan batch. Saya tidak berani mengatakan mereka diperlukan karena saya tidak cukup ahli Hibernate untuk melakukannya - mungkin itu hanya konfigurasi khusus saya - tetapi menurut pengalaman saya, mereka tetap diperlukan:

hibernate.order_inserts = true
hibernate.order_updates = true

Properti ini didokumentasikan dengan buruk, tetapi saya yakin apa yang mereka lakukan adalah mengaktifkan pernyataan SQL INSERT dan UPDATE untuk dikelompokkan dengan benar untuk eksekusi batch; Saya pikir ini mungkin sisipan multi-baris yang Anda cari. Jangan tembak saya jika saya salah dalam hal ini, saya mengingat dari ingatan.

Saya juga akan melanjutkan dan berasumsi bahwa Anda mengatur properti berikut; jika tidak, ini akan menjadi pengingat:

hibernate.jdbc.batch_size = xx

Di mana xx adalah ukuran batch yang Anda inginkan, tentu saja.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ganti semua bidang di MySQL

  2. Mengimpor file SQL yang lebih besar ke MySQL

  3. Hapus data dari semua tabel di MYSQL

  4. Tidak dapat membuka dan mengunci tabel hak istimewa:Tabel 'mysql.user' tidak ada

  5. Cara Menginstal MySQL di Debian 7