Transaction & ACID
Quảng cáo • Advertisement
📢 Sponsor Ad
Google AdSense
lesson.content.title
lesson.content.subtitle
🎯 Mục tiêu bài học
Sau bài này, bạn sẽ hiểu Transaction, 4 tính chất ACID, và các mức Isolation — kiến thức quan trọng trong thi FE.
1. Transaction là gì?
🏠 Ví dụ: Chuyển tiền ngân hàng
An chuyển 1 triệu cho Bình: (1) Trừ TK An 1tr, (2) Cộng TK Bình 1tr. Nếu bước 1 xong mà bước 2 lỗi → tiền biến mất! Transaction đảm bảo cả 2 bước phải thành công hoặc cả 2 đều hủy.
BEGIN TRANSACTION;
UPDATE TaiKhoan SET SoDu = SoDu - 1000000 WHERE MaTK = 'An';
UPDATE TaiKhoan SET SoDu = SoDu + 1000000 WHERE MaTK = 'Binh';
COMMIT; -- Lưu vĩnh viễn
-- Nếu lỗi: ROLLBACK; -- Hủy tất cả
2. ACID — 4 tính chất BẮT BUỘC NHỚ! 🔥
| Tính chất | Tên đầy đủ | Ý nghĩa | Ví dụ |
|---|---|---|---|
| A | Atomicity | Tất cả hoặc không gì cả (All or Nothing) | Chuyển tiền: cả trừ + cộng hoặc hủy hết |
| C | Consistency | DB luôn ở trạng thái hợp lệ | Tổng tiền trước = tổng tiền sau |
| I | Isolation | Các transaction không ảnh hưởng nhau | 2 người cùng rút không bị xung đột |
| D | Durability | Sau COMMIT → dữ liệu lưu vĩnh viễn | Mất điện cũng không mất dữ liệu đã commit |
3. Lock & Isolation Level
| Mức Isolation | Dirty Read | Non-repeatable Read | Phantom Read |
|---|---|---|---|
| READ UNCOMMITTED | ⚠️ Có thể | ⚠️ Có thể | ⚠️ Có thể |
| READ COMMITTED | ✅ Không | ⚠️ Có thể | ⚠️ Có thể |
| REPEATABLE READ | ✅ Không | ✅ Không | ⚠️ Có thể |
| SERIALIZABLE | ✅ Không | ✅ Không | ✅ Không |
💡 Giải thích 3 loại lỗi đọc
Dirty Read: Đọc dữ liệu chưa COMMIT (có thể bị ROLLBACK).
Non-repeatable Read: Đọc 2 lần cùng 1 dòng → kết quả khác nhau.
Phantom Read: Đọc 2 lần → số dòng khác nhau (có dòng "ma" xuất hiện).
4. Deadlock trong Database
Transaction A lock bảng X, chờ bảng Y. Transaction B lock bảng Y, chờ bảng X → Deadlock!
Giải pháp: Timeout (hủy sau thời gian chờ) hoặc Deadlock Detection.
📝 Tóm tắt nhanh
- Transaction = nhóm thao tác phải thành công TOÀN BỘ hoặc hủy TOÀN BỘ
- ACID: Atomicity, Consistency, Isolation, Durability
- COMMIT = lưu vĩnh viễn | ROLLBACK = hủy tất cả
- Isolation level cao → an toàn hơn nhưng chậm hơn
🎯 Câu hỏi ôn thi FE #3
Hỏi: Mức Isolation nào ngăn chặn được tất cả các lỗi đọc?
Đáp: SERIALIZABLE — mức cao nhất, ngăn Dirty Read, Non-repeatable Read, và Phantom Read.
Quảng cáo • Advertisement
📢 Ad Space
Google AdSense