Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apa yang sebenarnya dilakukan metode Statement.setFetchSize(nSize) di driver SQL Server JDBC?

Di JDBC, setFetchSize(int) metode ini sangat penting untuk kinerja dan manajemen memori dalam JVM karena metode ini mengontrol jumlah panggilan jaringan dari JVM ke database dan dengan demikian jumlah RAM yang digunakan untuk pemrosesan ResultSet.

Secara inheren jika setFetchSize(10) dipanggil dan driver mengabaikannya, mungkin hanya ada dua opsi:

  1. Coba driver JDBC lain yang akan mengikuti petunjuk ukuran pengambilan.
  2. Lihat properti khusus driver di Connection (URL dan/atau peta properti saat membuat instance Connection).

RESULT-SET adalah jumlah baris yang disusun pada DB sebagai respons terhadap kueri. ROW-SET adalah potongan baris yang diambil dari RESULT-SET per panggilan dari JVM ke DB. Jumlah ini panggilan dan RAM yang dihasilkan yang diperlukan untuk pemrosesan bergantung pada setelan ukuran pengambilan.

Jadi, jika RESULT-SET memiliki 100 baris dan ukuran fetch adalah 10, akan ada 10 panggilan jaringan untuk mengambil semua data, menggunakan kira-kira 10*{row-content-size} RAM pada waktu tertentu.

Ukuran pengambilan default adalah 10, yang agak kecil. Dalam kasus yang diposting, tampaknya driver mengabaikan pengaturan ukuran pengambilan, mengambil semua data dalam satu panggilan (persyaratan RAM besar, panggilan jaringan minimal yang optimal).

Apa yang terjadi di bawah ResultSet.next() adalah bahwa itu tidak benar-benar mengambil satu baris pada satu waktu dari RESULT-SET. Ini mengambilnya dari ROW-SET (lokal) dan mengambil ROW-SET berikutnya (tidak terlihat) dari server saat menjadi habis pada klien lokal.

Semua ini tergantung pada driver karena pengaturannya hanyalah 'petunjuk' tetapi dalam praktiknya saya menemukan ini adalah cara kerjanya untuk banyak driver dan database (diverifikasi di banyak versi Oracle, DB2 dan MySQL).



  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-SQL Bagaimana cara membuat tabel secara dinamis dalam prosedur tersimpan?

  2. Dapatkan garis bujur dan garis lintang terdekat dari tabel database MSSQL?

  3. Sertakan bulan yang hilang dalam kueri Grup Berdasarkan

  4. Prosesor Intel yang Direkomendasikan untuk Beban Kerja SQL Server 2014

  5. Dapatkan karakter antara 2 karakter khusus pertama dalam SQL