應用資料庫 進階
資料庫交易隔離等級有哪四種?各自解決什麼問題?
交易隔離等級
四種異常現象
- Dirty Read:讀到另一交易未提交的資料
- Non-repeatable Read:同一交易內兩次讀取同一行,結果不同(另一交易中間更新)
- Phantom Read:同一交易內兩次查詢,結果集行數不同(另一交易插入/刪除)
- Lost Update:兩個交易並發更新同一筆,其中一個更新被覆蓋
四個隔離等級(由低到高)
| 等級 | Dirty Read | Non-repeatable Read | Phantom Read |
|---|---|---|---|
| Read Uncommitted | ❌ 可能 | ❌ 可能 | ❌ 可能 |
| Read Committed | ✅ 防止 | ❌ 可能 | ❌ 可能 |
| Repeatable Read | ✅ 防止 | ✅ 防止 | ❌ 可能 |
| Serializable | ✅ 防止 | ✅ 防止 | ✅ 防止 |
效能取捨
隔離等級越高,並發效能越低(更多鎖定)
預設等級
- MySQL(InnoDB):Repeatable Read
- PostgreSQL:Read Committed
- Oracle:Read Committed
面試加分:PostgreSQL 使用 MVCC(多版本並發控制)實現隔離,不用鎖就能避免 Dirty Read,讀寫互不阻塞,效能優於傳統鎖機制。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
