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

Phân bổ bộ nhớ Oracle JDBC trong khi tìm nạp tập kết quả

Trình điều khiển JDBC của Cơ sở dữ liệu Oracle, các phiên bản trước 12:

Trình điều khiển phân bổ kích thước tối đa cho mỗi cột nhân với số hàng trong fetchSize trước khi thực hiện truy vấn.

Ví dụ cho một VARCHAR(4000) nó sẽ phân bổ 8k byte nhân với fetchSize .


phiên bản 12 (và mới hơn):

Nó phân bổ khoảng 15 byte cho mỗi cột mỗi hàng trong fetchSize trước khi thực hiện truy vấn. Sau khi thực thi, trình điều khiển trong phiên bản 12 chỉ phân bổ nhiều khi cần thiết để lưu trữ dữ liệu hàng thực tế.

Do đó, trình điều khiển phiên bản 12 thường sử dụng ít bộ nhớ hơn đáng kể so với trình điều khiển của phiên bản trước đó.


Ví dụ của bạn :

Trong ví dụ của bạn, một VARCHAR(20) có thể lớn tới 40 byte, một NUMBER có thể lớn đến 22 byte và VARCHAR(100) lớn tới 100 byte. Với fetchSize đặt thành 100 trình điều khiển cũ hơn sẽ phân bổ (40 + 22 + 100) * 100 = 16k . Trình điều khiển phiên bản 12 sẽ phân bổ 3 * 15 * 100 = 4.5k . Có thêm chi phí trong cả hai trình điều khiển mà tôi đang bỏ qua.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thử thách kiểm tra cơ sở dữ liệu Oracle - So sánh dữ liệu lược đồ

  2. chạy chuỗi dưới dạng truy vấn trong oracle

  3. Tại sao chạy truy vấn này với EXECUTE NGAY LẬP TỨC khiến nó không thành công?

  4. làm cho biểu mẫu bảng của tôi động

  5. Oracle SQL:sắp xếp hàng với chuỗi phân cách