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.