Backend nền tảng
E2 · Optimistic Lock và Pessimistic Lock
Optimistic: không khóa, dùng cột version; nếu version đã đổi → thất bại, thử lại.
E2 · Middle · cốt lõi
Optimistic: cứ sửa, lúc nộp mới kiểm tra có ai sửa trước chưa. Pessimistic: khóa cửa phòng lại rồi mới sửa.
Cốt lõi
- Optimistic: không khóa, dùng cột version; nếu version đã đổi → thất bại, thử lại.
- Pessimistic: khóa dòng (SELECT ... FOR UPDATE), transaction khác phải chờ.
- Mục tiêu: ngăn mất cập nhật (lost update).
Đánh đổi
Ít xung đột → Optimistic (giỏ hàng). Xung đột cao, không được sai → Pessimistic (đặt vé).
Trong thực tế
Amazon dùng version cho tồn kho.
Bug thường gặp
Hai transaction khóa hai dòng theo thứ tự ngược nhau → deadlock; hoặc đọc–sửa–ghi không khóa → mất cập nhật tồn kho.
Tự hỏi lại
Pessimistic lock có nguy cơ gì? (deadlock, giảm throughput).