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()
và 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