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

On this page