💻 TIN HỌC · LỚP 11

Giao dịch cơ sở dữ liệu: ACID và tránh cập nhật bị mất

Hiểu transaction như một đơn vị công việc, giải thích atomicity–consistency–isolation–durability và nhận diện lost update bằng lịch xen kẽ.

📖 Bài học⏱ 12 phút👁 1🔖 0
Đóng góp bởi Võ Trí Kỳ Nam · cập nhật 03/09/2026
Đăng nhập để học

🗃️ Nhiều câu lệnh nhưng một ý định

Chuyển tiền gồm ít nhất ghi giảm một tài khoản và ghi tăng tài khoản khác. Nếu chỉ một bước thành công, dữ liệu sai dù từng câu SQL riêng lẻ hợp lệ. Transaction gom các thao tác thành một đơn vị được COMMIT hoặc hủy bằng ROLLBACK.

Hai giao dịch đọc cùng số dư rồi cập nhật xen kẽ gây mất một thay đổi; nhánh an toàn dùng khóa hoặc cập nhật nguyên tử và commit
Đúng khi chạy một mình chưa đủ; phải xét lịch xen kẽ khi có nhiều người dùng.

ACID là bốn câu hỏi

  • Atomicity: toàn bộ hoặc không bước nào có hiệu lực.
  • Consistency: giao dịch hợp lệ đưa cơ sở dữ liệu từ trạng thái thỏa ràng buộc sang trạng thái thỏa ràng buộc.
  • Isolation: các giao dịch đồng thời không quan sát lẫn nhau theo cách trái mức cô lập đã chọn.
  • Durability: sau commit, thay đổi tồn tại qua sự cố mà hệ thống cam kết chịu được.

Ví dụ lost update

T1 và T2 cùng đọc tồn kho 10. T1 tính còn 9; T2 tính còn 8. Nếu T1 ghi 9 rồi T2 ghi 8, thay đổi của T1 bị ghi đè. Có thể dùng cập nhật nguyên tử SET stock=stock-? kèm điều kiện, khóa hàng hoặc cơ chế kiểm tra phiên bản.

⚠️ Isolation có đánh đổi

Mức cô lập mạnh giảm anomaly nhưng có thể tăng chờ hoặc xung đột. Chọn giải pháp dựa trên invariant cần bảo vệ, kiểu tải và khả năng retry; không mặc định rằng mọi transaction tự động ngăn mọi lỗi cạnh tranh.

✍️ Luyện tập

Vẽ lịch đọc–ghi của hai người cùng mua sản phẩm cuối. Nêu invariant, điểm có thể sai và thiết kế cập nhật bảo đảm tồn kho không âm.

📚 Căn cứ biên soạn

  • Chương trình GDPT 2018 và mạch nội dung Kết nối tri thức với cuộc sống.
  • Nội dung biên soạn độc lập, nhấn mạnh bằng chứng, quy trình và giới hạn của kết luận.
NGUỒN HỌC LIỆU

Nội dung được biên soạn từ

TRAO ĐỔI · HỎI ĐÁP

Cùng nhau hiểu bài sâu hơn

Viết lời giải, công thức, đặt câu hỏi hoặc gửi ảnh phần bạn đang vướng.

Đăng nhập để đặt câu hỏi và tham gia trao đổi.

Chưa có trao đổi nào. Hãy là người đầu tiên đặt câu hỏi nhé.