數(shù)據(jù)庫(kù)的并發(fā)操作可能帶來(lái)哪些問(wèn)題

數(shù)據(jù)庫(kù)的并發(fā)操作可能帶來(lái)哪些問(wèn)題

數(shù)據(jù)庫(kù)的并發(fā)操作通常會(huì)帶來(lái)丟失更新問(wèn)題,不一致分析問(wèn)題和“臟數(shù)據(jù)”的讀出問(wèn)題。

相關(guān)知識(shí)點(diǎn)介紹:

事務(wù)是并發(fā)控制的基本單位。

(相關(guān)教程推薦:mysql教程

并發(fā)操作帶來(lái)的數(shù)據(jù)不一致性

1、丟失修改(Lost Update)

2、不可重復(fù)讀(Non-repeatable Read)

3、幻讀(Phantom Read)

4、讀“臟”數(shù)據(jù)(Dirty Read)

下面我們來(lái)分別看一下:

丟失修改:兩個(gè)事務(wù)T-1和T-2讀入同一數(shù)據(jù)并修改,T-2的提交結(jié)果破壞了T-1提交 的結(jié)果,導(dǎo)致T-1的修改被丟失。(修改-修改沖突)

不可重復(fù)讀:事務(wù)1讀取某一數(shù)據(jù),事務(wù)2對(duì)其做了修改;當(dāng)事務(wù)1再次讀該數(shù)據(jù) 時(shí),得到與前一次不同的值(讀-更新沖突)

幻讀:事務(wù)T-1按一定條件從數(shù)據(jù)庫(kù)中讀取了某些數(shù)據(jù)記錄,事務(wù)T-2刪除(插入) 了其中部分記錄 ,當(dāng)T-1再次按相同條件讀取數(shù)據(jù)時(shí),發(fā)現(xiàn)某些記錄神秘地 消失(出現(xiàn))了。(讀-插入/刪除沖突)

臟數(shù)據(jù):?事務(wù)T-1修改某一數(shù)據(jù),并將其寫(xiě)回磁盤;事務(wù)T-2讀取同一數(shù)據(jù)后,T-1由 于某種原因被撤銷這時(shí)T-1,已修改過(guò)的數(shù)據(jù)恢復(fù)原值,T-2讀到的數(shù)據(jù)就 與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致T-2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)(修 改-讀沖突)

數(shù)據(jù)不一致性:由于并發(fā)操作破壞了事務(wù)的隔離性

并發(fā)控制的目的

要用正確的方式調(diào)度并發(fā)操作,使一個(gè)用戶事務(wù)的執(zhí)行不受其他事務(wù)的干擾,從而避免造成數(shù)據(jù)的不一致性。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享