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

Mengulang ResultSet menggunakan JDBC untuk Oracle membutuhkan banyak waktu sekitar 16 detik?

Saya telah menyiapkan tabel dengan 4000 baris dan 10 kolom dengan masing-masing 10 karakter dan membuat tes kinerja sederhana menggunakan pendekatan berikut (RealTimeCounter adalah kelas yang mengukur waktu nyata antara start() dan stop() ):

List<String> myResult = new ArrayList<>();
ResultSet rs = s.executeQuery("SELECT * FROM Performance");

RealTimeCounter rtc = new RealTimeCounter();
rtc.start();
while(rs.next()) {
    myResult.add(rs.getString(1));
}
rtc.stop();
System.out.println(rtc);

Hasil:

  • Ukuran pengambilan default:waktu eksekusi kira-kira. 20 detik
  • ukuran pengambilan =100:waktu eksekusi kira-kira 2,2 detik
  • ukuran pengambilan =500:waktu eksekusi kira-kira 450 mdtk
  • ukuran pengambilan =2000:waktu eksekusi kira-kira 120 mdtk
  • ukuran pengambilan =4000:waktu eksekusi kira-kira 50 mdtk
  • ukuran pengambilan =4001:waktu eksekusi kira-kira 10 mdtk (!!)

Jadi, ukuran pengambilan tidak memiliki dampak signifikan pada kecepatan eksekusi.

Perhatikan bahwa, di sisi lain, ukuran pengambilan berdampak pada konsumsi memori. Cukup menarik, analisis cepat menggunakan Runtime.getRuntime().freeMemory(); sebelum dan sesudah kode di atas menunjukkan bahwa dampaknya jauh lebih kecil dari yang saya harapkan. Angka yang saya dapatkan adalah:

  • Ukuran pengambilan default:665k
  • ukuran pengambilan =100:665rb
  • ukuran pengambilan =500:665k
  • ukuran pengambilan =2000:743rb
  • ukuran pengambilan =4000:821rb
  • ukuran pengambilan =4001:861rb


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi Concat tidak berfungsi - jumlah argumen tidak valid

  2. Oracle Insert Select dengan pesanan berdasarkan

  3. Oracle masukkan ke table2 lalu hapus dari table1, kecuali jika gagal

  4. Cara Membuat Fungsi PL/SQL Di Database Oracle

  5. Oracle.DataAccess.dll tidak dapat ditemukan meskipun ada