Driver JDBC Oracle Database, versi sebelum 12:
Driver mengalokasikan ukuran maksimum untuk setiap kolom dikalikan jumlah baris dalam fetchSize
sebelum mengeksekusi query.
Misalnya untuk VARCHAR(4000)
kolom itu akan mengalokasikan 8k byte kali fetchSize
.
versi 12 (dan yang lebih baru):
Ini mengalokasikan sekitar 15 byte per kolom per baris di fetchSize
sebelum mengeksekusi query. Setelah eksekusi, driver di versi 12 hanya mengalokasikan sebanyak yang diperlukan untuk menyimpan data baris yang sebenarnya.
Akibatnya, driver versi 12 biasanya menggunakan memori yang jauh lebih sedikit daripada driver versi sebelumnya.
Contoh Anda :
Dalam contoh Anda sebuah VARCHAR(20)
bisa sebesar 40 byte, sebuah NUMBER
bisa sebesar 22 byte dan VARCHAR(100)
sebesar 100 byte. Dengan fetchSize
set ke 100 driver lama akan mengalokasikan (40 + 22 + 100) * 100 = 16k
. Driver versi 12 akan mengalokasikan 3 * 15 * 100 = 4.5k
. Ada overhead tambahan di kedua driver yang saya abaikan.