Giả sử bạn sử dụng công cụ giao dịch (Thường là Innodb), hãy xóa và điền vào bảng trong cùng một giao dịch.
Đảm bảo rằng người đọc của bạn sử dụng cấp độ cách ly giao dịch READ_COMMITTED trở lên (mặc định là REPEATABLE READ, cấp độ này cao hơn).
Bằng cách đó, người đọc sẽ tiếp tục có thể đọc nội dung cũ của bảng trong quá trình cập nhật.
Có một số điều cần cẩn thận:
- Nếu bảng lớn đến mức làm cạn vùng khôi phục - điều này có thể thực hiện được nếu bạn cập nhật toàn bộ (giả sử) bảng 1 triệu hàng. Tất nhiên điều này có thể điều chỉnh được nhưng có giới hạn
- Nếu giao dịch không thành công một phần và được khôi phục - việc khôi phục các giao dịch lớn là RẤT kém hiệu quả trong InnoDB (nó được tối ưu hóa cho các cam kết, không phải hoàn lại)
- Hãy cẩn thận với các trường hợp bế tắc và khóa thời gian chờ, điều này có nhiều khả năng xảy ra nếu bạn sử dụng các giao dịch lớn.