資料庫的並發操作通常會帶來遺失更新問題,不一致分析問題和「髒資料」的讀出問題。
相關知識點介紹:
交易是並發控制的基本單位。
(相關教學建議:mysql教學)
並發運算帶來的資料不一致性
1、遺失修改(Lost Update)
2、不可重複讀取(Non-repeatable Read)
3、幻讀(Phantom Read)
4、讀取「髒」資料(Dirty Read)
下面我們來分別看一下:
遺失修改:兩個交易T-1和T-2讀入同一資料並修改,T-2的提交結果破壞了T -1提交的結果,導致T-1的修改被遺失。 (修改-修改衝突)
不可重複讀:事務1讀取某一數據,事務2對其做了修改;當事務1再次讀該數據時,得到與前一次不同的值(讀-更新衝突)
幻讀:事務T-1以一定條件從資料庫中讀取了某些資料記錄,事務T-2刪除(插入) 了其中部分記錄,當T-1再次按相同條件讀取資料時,發現某些記錄神秘地消失(出現)了。 (讀-插入/刪除衝突)
髒數據: 事務T-1修改某一數據,並將其寫回磁碟;事務T-2讀取同一數據後,T-1由於某種原因被撤銷這時T-1,已修改過的數據恢復原值,T-2讀到的數據就與數據庫中的數據不一致T-2讀到的數據就為“臟”數據,即不正確的數據(修改-讀衝突)
資料不一致:由於並發操作破壞了交易的隔離性
#並發控制的目的
要用正確的方式調度並發操作,使一個使用者事務的執行不受其他事務的干擾,從而避免造成資料的不一致。
以上是資料庫的並發操作可能帶來哪些問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!