Có vẻ như khách hàng của bạn đang sống trong ảnh chụp nhanh cơ sở dữ liệu của riêng họ, điều này sẽ đúng nếu họ có một giao dịch mở bằng cách sử dụng mức cô lập REPEATABLE-READ. Nói cách khác, không có dữ liệu nào được cam kết sau khi khách hàng đó bắt đầu giao dịch sẽ được hiển thị cho khách hàng đó.
Một cách giải quyết là buộc một giao dịch mới phải bắt đầu. Chỉ cần chạy COMMIT trong phiên khách hàng có vẻ như đang xem dữ liệu cũ. Điều đó sẽ giải quyết mọi giao dịch đang mở và truy vấn tiếp theo sẽ bắt đầu một giao dịch mới.
Một cách khác bạn có thể kiểm tra là sử dụng khóa đọc truy vấn
chẳng hạn như SELECT ... FOR UPDATE
. Thao tác này sẽ đọc dữ liệu được cam kết gần đây nhất, bất kể mức độ cô lập giao dịch của khách hàng. Có nghĩa là, ngay cả khi khách hàng đã bắt đầu giao dịch của họ bằng REPEATABLE-READ, việc đọc khóa hoạt động như thể họ đã bắt đầu giao dịch của mình với READ-COMMITTED.