Đây là replication lag: ghi đi vào primary, đọc lại rơi vào replica chưa kịp áp dụng bản ghi đó. Với replication bất đồng bộ, độ trễ vài chục mili giây là bình thường, nhưng khi replica bận hoặc có một transaction ghi lớn thì lag lên hàng giây.
User cần read-your-own-writes: người vừa ghi phải thấy dữ liệu của chính mình. Các cách xử lý, từ đơn giản tới tốn kém:
- Đọc từ primary trong một cửa sổ ngắn: sau khi user ghi, ghim mọi truy vấn của user đó vào primary trong vài giây (đánh dấu trong session/cookie). Đơn giản và đủ cho đa số ứng dụng.
- Định tuyến theo bản chất truy vấn: dữ liệu quan trọng và dữ liệu của chính mình đọc primary; báo cáo, thống kê, danh sách công khai đọc replica.
- Chờ theo vị trí replication: ghi xong lấy LSN/GTID, truy vấn tiếp chỉ chạy trên replica đã áp dụng tới vị trí đó. Chính xác nhất, phức tạp nhất.
- Che ở tầng UI: sau khi ghi thì hiển thị luôn dữ liệu vừa gửi thay vì gọi API đọc lại.
Cần nói thêm khi phỏng vấn: replica chỉ scale đọc, không giúp gì cho ghi — mọi replica đều phải áp dụng đúng lượng ghi đó. Và phải giám sát lag: khi lag vượt ngưỡng thì rút replica khỏi vòng phục vụ, tránh trả dữ liệu quá cũ.