Có vẻ như có những ý kiến rất khác nhau về việc sử dụng các giao dịch để đọc từ cơ sở dữ liệu.Giao dịch cho quyền truy cập DB chỉ đọc?
Trích từ developerWorks Điều Transaction strategies: Models and strategies overview:
Tại sao bạn sẽ cần một giao dịch nếu bạn chỉ đọc dữ liệu? Câu trả lời là bạn không. Bắt đầu từ một giao dịch để thực hiện một read-only hoạt động làm tăng thêm chi phí của thread xử lý và có thể gây ra chia sẻ khóa đọc trên cơ sở dữ liệu (tùy vào loại cơ sở dữ liệu bạn đang sử dụng và những gì mức độ cách ly được thiết lập đến).
Là một quan điểm ngược lại có đoạn trích sau đây từ tài liệu Hibernate Non-transactional data access and the auto-commit mode
khuyến nghị của chúng tôi là không sử dụng chế độ autocommit trong một ứng dụng, và để áp dụng read-only chỉ khi giao dịch có hiệu suất rõ ràng là lợi ích hoặc khi các thay đổi mã trong tương lai rất khó xảy ra. Luôn thích giao dịch ACID thông thường cho nhóm hoạt động truy cập dữ liệu của bạn, bất kể bạn đọc hay ghi dữ liệu.
Cũng có một cuộc tranh luận tương tự trên danh sách gửi thư EclipseLink here.
Vậy sự thật nằm ở đâu? Các giao dịch để đọc thực hành tốt nhất hay không? Nếu cả hai đều là giải pháp khả thi, thì tiêu chí để sử dụng giao dịch là gì?
Theo như tôi thấy, nó chỉ tạo sự khác biệt nếu mức cách ly cao hơn 'đã đọc cam kết'. Điều này có đúng không?
Trải nghiệm và đề xuất là gì?