Docs học tập
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ụ.

On this page