SQL 標準定義四級隔離,隔離級別越高,併發性能越低。MySQL 默認 REPEATABLE READ。本文理論講解四大級別特性、三大異常現象,並以 MySQL 5.5 實測驗證各級別行為差異。
| 隔離級別 | 髒讀 | 不可重複讀 | 幻讀 | 說明 |
|---|---|---|---|---|
| READ UNCOMMITTED | 可能 | 可能 | 可能 | 最低隔離,極少用 |
| READ COMMITTED | 不可 | 可能 | 可能 | 多數 DB 默認 |
| REPEATABLE READ | 不可 | 不可 | 可能* | MySQL 默認,*InnoDB MVCC 解決 |
| SERIALIZABLE | 不可 | 不可 | 不可 | 最高隔離,串行執行,性能最差 |

環境:RedHat 5.8 + MySQL 5.5,雙 Session 驗證。
Session A 修改未提交,Session B 立即可見修改;A 回滾後 B 數據恢復原狀 → 髒讀/幻讀。
適用場景:大量寫入、極少讀取,可容忍不一致。

Session A 修改提交前,Session B 不可見;A 提交後 B 可見 → 不可重複讀。

Session A 提交修改後,Session B 在提交前仍見舊數據;B 提交後才見新數據 → 可重複讀。

Session A 未提交修改時,Session B 查詢阻塞等待 → 併發能力極弱。
