Đây là thỏa thuận:Chèn hàng loạt JDBC đang bị chậm! Ý tôi là, REALLY SLOW?
- tôi tạo ra một kết nối
conn
sử dụngDriverManager
- tôi đặt
conn.autoCommit(false);
- Sau đó, tôi có
PreparedStatement pStat = conn.prepareStatement(insert_string_with_parameter);
- tôi đặt một vài thông số với pStat.set ... sau đó tôi thêm lô hàng có
pStat.addBatch();
- Mỗi 10000 hàng (tôi gọi
addBatch()
10000 lần), tôi gọipStat.executeBatch();
- Không chắc nếu cần thiết nhưng tôi cũng gọi
pStat.clearBatch()
ngay sau khi
Ngay cả khi tất cả các bên trên âm thanh tốt với tôi, đây là CHẬM !!!.
Tôi chỉ có trung bình 35 bản ghi (chỉ có tổng cộng 8 cột, chỉ một khóa chính tăng tự động kỹ thuật và một số không ràng buộc null) mỗi giây. Tôi tính rằng sẽ mất một tuần để chèn tất cả các hàng 20M của tôi ...
Tôi có làm gì sai không?
Tôi nên thử thêm bao nhiêu hàng vào mỗi chu kỳ lô? Có quá 10000 không?
Tôi cũng đã thử với 1000 hàng tại thời điểm đó nhưng tôi không thấy bất kỳ cải thiện đáng kể nào ... – Gevorg
Vui lòng hiển thị SQL, lược đồ và chỉ ra các chỉ mục và trình kích hoạt có trên (các) bảng liên quan. – Bohemian
không có chỉ mục và không có trình kích hoạt. Đó là bảng đơn giản nhất từ trước đến nay ... – Gevorg