Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hợp nhất / tồn tại OpenJPA rất chậm

Bạn có thể thử bắt đầu giao dịch trước khi lặp lại và sau đó xác nhận nó sau đó trong một giao dịch duy nhất. Vì vậy, về cơ bản bạn đang tạo một lô sẽ được hợp nhất / tồn tại khi cam kết.

Ngoài ra, bạn có thể giới hạn số lượng đối tượng trong một lô được xử lý tại một thời điểm và có thể chuyển các thay đổi vào cơ sở dữ liệu một cách rõ ràng.

Tại đây, bạn đang bắt đầu một giao dịch và chấp nhận nó trong mỗi lần lặp lại và việc tạo / đóng trình quản lý thực thể mỗi lần, sẽ ảnh hưởng đến hiệu suất của nhiều dữ liệu.

Nó sẽ giống như đoạn mã dưới đây.

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();

Tại đây, bạn cũng có thể khôi phục toàn bộ giao dịch nếu bất kỳ đối tượng nào không thể tồn tại / hợp nhất.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra ID nào từ một tập hợp không tồn tại trong bảng

  2. 50 câu hỏi phỏng vấn MySQL hàng đầu bạn phải chuẩn bị vào năm 2022

  3. Bảng PHP (Ngày) thay đổi màu động dựa trên tính hợp lệ

  4. Tại sao một số kết nối mysql lại chọn dữ liệu cũ làm cơ sở dữ liệu mysql sau khi xóa + chèn?

  5. Làm cách nào tôi có thể có mệnh đề MySQL IN trong truy vấn tìm kiếm đàn hồi của mình?