應用資料庫 進階

資料庫交易隔離等級有哪四種?各自解決什麼問題?

AI 練習作答

交易隔離等級

四種異常現象

  • 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 評分