Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Alokasi memori Oracle JDBC saat mengambil hasil

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah Anda menggunakan Microsoft Entity Framework dengan Oracle?

  2. mendapat urutan multi-item

  3. regex untuk menemukan dan menghindari titik ganda di Oracle

  4. Bagaimana tanggal disimpan di Oracle?

  5. SQL:Cari daftar kolom dengan nilai tertentu (dalam satu baris)