Bạn không thể ngăn chặn việc đọc bẩn. Các nhà văn có những khóa độc quyền để ngăn chặn sự trung thực, đọc cam kết, đọc. Nhưng không có gì không có gì bạn có thể làm để ngăn chặn việc đọc bẩn. Trình đọc bẩn phải ngừng đọc bẩn, chấm thời gian.
Giả sử rằng mã thăm dò bảng Khách hàng nằm trong tầm kiểm soát của bạn, giải pháp là xóa gợi ý đọc bẩn khỏi truy vấn. Điều này có thể sẽ gây ra tranh cãi, vì cuộc thăm dò bây giờ sẽ chặn các bài viết. Giải pháp tốt nhất cho điều đó là bật lập phiên bản hàng :
ALTER DATABASE [<DBNAME>] SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE [<DBNAME>] SET READ_COMMITTED_SNAPSHOT ON;
Sau đó, chỉ cần thăm dò ý kiến từ Khách hàng như một truy vấn thông thường, có bất kỳ gợi ý nào. Cuộc thăm dò ý kiến của bạn sẽ không chặn sau khi ghi vì tính năng lập phiên bản hàng sẽ bắt đầu và chuyển hướng quét truy vấn đến phiên bản cập nhật trước, không bị khóa của hàng.
Thêm một lưu ý:bỏ phiếu mỗi 500ms? Có lẽ bạn nên sử dụng cơ chế Thông báo truy vấn để làm mất hiệu lực bộ nhớ đệm của mình, xem The Mysterious Thông báo .