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

hibernate.jdbc.fetch_size hoặc @QueryHints (@ javax.persistence.QueryHint (name =org.hibernate.fetchSize, value =10)) không hoạt động

kích thước tìm nạp mặc định trong oracle đã là 10 bản ghi, vì vậy thật kỳ lạ khi bạn đang gặp vấn đề về bộ nhớ khi thêm gợi ý này. Đặc biệt nếu 100000 không gây ra vấn đề gì.

Một số việc tôi sẽ làm để xác định vấn đề và đưa ra giải pháp:

Barebone kiểm tra mã của bạn

Kiểm tra mã chịu trách nhiệm cho các truy vấn của bạn (có thể là DAO của bạn) với chi phí tối thiểu. Tôi nghi ngờ ngoại lệ ngoài bộ nhớ có nhiều khả năng là do xử lý kết quả cơ sở dữ liệu chứ không phải truy vấn + tìm nạp thực.

Vì vậy, tạm thời thay đổi mã của bạn để chỉ thực hiện truy vấn nhưng không thực hiện bất kỳ ánh xạ hoặc xử lý nào khác trên đó. Chỉ cần đảm bảo rằng nó đã hoàn thành.

Nếu điều này dường như "khắc phục được" sự cố của bạn, bạn có thể đã thực hiện một số thao tác trên dữ liệu bạn nhận được làm tràn bộ nhớ của bạn.

Cập nhật phần phụ thuộc của bạn

Nếu bạn đang sử dụng maven (hoặc gradle, hoặc bất kỳ công cụ xây dựng nào khác), tôi khuyên bạn nên cập nhật bất kỳ bản cập nhật nào ít nhất lên phiên bản nhỏ mới nhất (ví dụ:1.2.3 -> 1.2.9), điều này sẽ không phá vỡ bất kỳ điều gì nhưng có thể sửa một số lỗi.

Không ngẫu nhiên với kích thước tìm nạp

Xem những câu trả lời này để quyết định kích thước tìm nạp phù hợp với tình huống của bạn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng hợp các hàng trong câu lệnh SQL Oracle

  2. Truy vấn SQL của Oracle - tạo bản ghi giữa hai ngày

  3. cách tìm chỉ mục trên bảng trong oracle

  4. Máy khách Oracle yêu cầu dấu ngoặc đơn xung quanh tên cột?

  5. Có thể tạo .jks từ tệp .crt và .key không