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

Penggabungan/bertahan OpenJPA sangat lambat

Anda dapat mencoba memulai transaksi sebelum iterasi &kemudian melakukan setelahnya dalam satu transaksi. Jadi, pada dasarnya Anda membuat kumpulan yang akan digabungkan/bertahan pada komit.

Selain itu, Anda dapat membatasi jumlah objek dalam kumpulan yang akan diproses pada satu waktu &dapat secara eksplisit memasukkan perubahan ke dalam basis data.

Di sini, Anda memulai transaksi &mengkomitnya di setiap iterasi dan juga membuat/menutup pengelola entitas setiap kali, akan memengaruhi kinerja banyak data.

Ini akan menjadi seperti kode di bawah ini.

em = factory.createEntityManager();
em.getTransaction().begin();
int i = 0;

   for (Object ob : list) {
       Long start = Calendar.getInstance().getTimeInMillis();

       em.merge(ob);

       Long end = Calendar.getInstance().getTimeInMillis();
       Long diff = end - start;
       LOGGER.info("Time: " + diff);

       /*BATCH_SIZE is the number of entities 
            that will be persisted/merged at once */

       if(i%BATCH_SIZE == 0){    
           em.flush();
           em.clear(); 
       }

       i++;
   }

em.getTransaction().commit();
em.close();

Di sini, Anda juga dapat mengembalikan seluruh transaksi jika salah satu objek gagal bertahan/gabung.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menambahkan Kolom Auto Increment pada Tabel yang Ada di MySQL

  2. Cara terbaik untuk memeriksa apakah mysql_query mengembalikan hasil apa pun?

  3. Membandingkan dua desain db untuk pesan internal

  4. Mengapa kata kunci MYSQL IN tidak mempertimbangkan nilai NULL

  5. Bagaimana cara memilih beberapa catatan (baris) dari kolom di mysql?