Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Lặp lại một Tập kết quả bằng JDBC cho Oracle mất rất nhiều thời gian khoảng 16 giây?

Tôi đã thiết lập một bảng với 4000 hàng và 10 cột với 10 ký tự mỗi hàng và thực hiện một bài kiểm tra hiệu suất đơn giản bằng cách sử dụng phương pháp sau (RealTimeCounter là một lớp đo thời gian thực giữa start()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);

Kết quả:

  • Kích thước tìm nạp mặc định:thời gian thực thi là khoảng. 20 giây
  • kích thước tìm nạp =100:thời gian thực thi khoảng 2,2 giây
  • kích thước tìm nạp =500:thời gian thực thi khoảng 450 mili giây
  • kích thước tìm nạp =2000:thời gian thực thi khoảng 120 mili giây
  • kích thước tìm nạp =4000:thời gian thực thi khoảng 50 mili giây
  • kích thước tìm nạp =4001:thời gian thực thi khoảng 10 mili giây (!!)

Vì vậy, kích thước tìm nạp không có tác động đáng kể đến tốc độ thực thi.

Lưu ý rằng, mặt khác, kích thước tìm nạp có một số tác động đến mức tiêu thụ bộ nhớ. Thật thú vị, một phân tích nhanh bằng cách sử dụng Runtime.getRuntime().freeMemory(); Tuy nhiên, trước và sau đoạn mã trên cho thấy tác động ít hơn nhiều so với tôi mong đợi. Những con số tôi nhận được là:

  • Kích thước tìm nạp mặc định:665k
  • kích thước tìm nạp =100:665k
  • kích thước tìm nạp =500:665k
  • kích thước tìm nạp =2000:743k
  • kích thước tìm nạp =4000:821k
  • kích thước tìm nạp =4001:861k


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối bên trong SQL trên các câu lệnh chọn

  2. Loại dữ liệu bản ghi dựa trên con trỏ với con trỏ trả về nhiều giá trị trong cơ sở dữ liệu Oracle

  3. có chức năng nào để dịch dữ liệu trong sql không

  4. Tác động của việc xác định cột VARCHAR2 có độ dài lớn hơn

  5. Cách tiếp cận lỗi Đã bị trừ do lỗi cuộc gọi đọc khi kết nối với phiên bản Amazon RDS Oracle