幻讀(Phantom read)

同一個事務使用相同的條件搜尋第一次與第二次找出的筆數不相同,就叫做 Phantom read。

流程圖

原資料總筆數共 5 筆。

使用者_1 開始交易,並下條件搜尋取得了總筆數 5 筆的資料。

使用者_2 開始交易,並新增了 1 筆資料到資料庫,並結束了交易。

使用者_1 再次下相同條件搜尋,取得了總筆數 6 筆的資料。

解決

核心問題, A 事務在同一次事務未完成前,同樣的搜尋得到不同的結果。

若要避免此行為,必須確保交易在確認前不阻止其他讀取交易,但會阻止更新交易

透過 隔離模式 Serializable 解決。

Last updated

Was this helpful?