Backend nền tảng
E1 · Isolation Level của Transaction
Kiểm soát tính hiển thị giữa các transaction chạy đồng thời.
E1 · Nâng cao
Như mức độ "che màn" giữa các người cùng sửa một tài liệu: che càng kín càng an toàn nhưng càng phải chờ nhau.
Cốt lõi
- Kiểm soát tính hiển thị giữa các transaction chạy đồng thời.
- Thấp → cao: Read Uncommitted → Read Committed → Repeatable Read → Serializable.
- Read Committed chặn Dirty Read; Repeatable Read chặn thêm Non-Repeatable Read; Serializable chặn cả Phantom Read.
Đánh đổi
Mức càng cao càng an toàn nhưng hiệu năng càng thấp.
Trong thực tế
MySQL mặc định Repeatable Read; Postgres mặc định Read Committed.
Bug thường gặp
Đọc số dư, kiểm tra đủ tiền rồi mới trừ ở mức Read Committed → hai request đồng thời cùng qua kiểm tra, số dư âm.
Tự hỏi lại
Phân biệt Dirty / Non-Repeatable / Phantom Read bằng ví dụ.