什麼是事務?
事務就是一件不可分割的工作單元,所有操作要麼全成功,要麼全失敗回滾。
ACID 四大特性
| 特性 | 全稱 | 核心含義 |
| A | Atomicity(原子性) | 事務不可分割,全做或全不做 |
| C | Consistency(一致性) | 資料從一個一致狀態轉移到另一個一致狀態(如轉賬:扣款與增款同步) |
| I | Isolation(隔離性) | 併發事務互不干擾,隔離級別決定干擾程度 |
| D | Durability(持久性) | 提交後的修改永久保存,不會因故障丟失 |
隔離性是保證一致性的手段;ACID 統服務於資料一致性。
四大隔離級別(JDBC 規範)
- READ_UNCOMMITTED(讀未提交):可能髒讀、不可重複讀、幻讀
- READ_COMMITTED(讀已提交):防髒讀,可能不可重複讀、幻讀(MySQL 預設)
- REPEATABLE_READ(可重複讀):防髒讀、不可重複讀,可能幻讀(InnoDB 預設)
- SERIALIZABLE(串行化):完全串行,最高隔離,效能最低
由上至下:併發性能遞減,安全性遞增。
三大併發異常
- 髒讀:事務 A 讀到事務 B 未提交 的數據(任何隔離級別都應禁止)
- 不可重複讀:事務 A 兩次讀同一行,事務 B 修改並提交 導致結果不同
- 幻讀:事務 A 兩次查詢同一範圍,事務 B 新增並提交 導致行數變化
隔離級別 vs 異常對應表
隔離級別 髒讀 不可重複讀 幻讀
READ_UNCOMMITTED Y Y Y
READ_COMMITTED N Y Y
REPEATABLE_READ N N Y
SERIALIZABLE N N N
資料庫層面實現:鎖機制
- 插入數據 → 鎖表
- 更新數據 → 鎖行
- InnoDB 採用 MVCC(多版本併發控制)+ 鎖,實現 REPEATABLE_READ 且大幅減少鎖衝突。
總結圖示

理解事務本質與隔離級別權衡,是設計高併發資料存取邏輯的基石。