數(shù)據(jù)庫中的事務(wù)是可以并發(fā)執(zhí)行的,由此帶來四種并發(fā)問題:
一、丟失更新 update lost
1.回滾丟失 事務(wù)A修改X, 事務(wù)B修改X, 事務(wù)B回滾,事務(wù)A提交。結(jié)果:事務(wù)A的修改丟失了
2.覆蓋丟失 并發(fā)的事務(wù)A和A'執(zhí)行同樣的任務(wù), A讀取X, B讀取X, A將X+1寫回,A'將X+1寫回。結(jié)果:X應(yīng)為X+2,實(shí)際卻為X+1
二、臟讀取 dirty read
事務(wù)A修改數(shù)據(jù)X(此時(shí)A沒有commit),事務(wù)B讀取X,事務(wù)A回滾。 結(jié)果 : 事務(wù)B讀取的X不準(zhǔn)確
三、不可重復(fù)讀 Non-Repeatable Read
事務(wù)A讀取數(shù)據(jù)X ,事務(wù)B修改數(shù)據(jù)X ,然后事務(wù)A再讀該數(shù)據(jù),結(jié)果:事務(wù)A兩次讀取的數(shù)據(jù)不一致。
四、幻想讀 Phantom Read 讀取的數(shù)據(jù)集未改變,但是條件數(shù)據(jù)集改變,造成事務(wù)A兩次讀取的數(shù)據(jù)不一致。
解決方案:
Sql標(biāo)準(zhǔn)隔離級(jí)別
|
Dirty Read
|
NonRepeatable Read
|
Phantom Read
|
Read uncommitted
|
Possible
|
Possible
|
Possible
|
Read committed
|
Not possible
|
Possible
|
Possible
|
Repeatable read
|
Not possible
|
Not possible
|
Possible
|
Serializable
|
Not possible
|
Not possible
|
Not possible
|
Serializable 全序列化 提供嚴(yán)格的事務(wù)隔離。它要求事務(wù)序列化執(zhí)行,事務(wù)只能一個(gè)接著一個(gè)地執(zhí)行,但不能并發(fā)執(zhí)行。如果僅僅通過“行級(jí)鎖”是無法實(shí)現(xiàn)事務(wù)序列化的,必須通過其他機(jī)制保證新插入的數(shù)據(jù)不會(huì)被剛執(zhí)行查詢操作的事務(wù)訪問到。
Repeatable Read 可重復(fù)讀取 禁止不可重復(fù)讀取和臟讀取,但是有時(shí)可能出現(xiàn)幻影數(shù)據(jù)。這可以通過“共享讀鎖”和“排他寫鎖”實(shí)現(xiàn)。讀取數(shù)據(jù)的事務(wù)將會(huì)禁止寫事務(wù)(但允許讀事務(wù)),寫事務(wù)則禁止任何其他事務(wù)。
Read Committed 授權(quán)讀取 允許不可重復(fù)讀取,但不允許臟讀取。這可以通過“瞬間共享讀鎖”和“排他寫鎖”實(shí)現(xiàn)。讀取數(shù)據(jù)的事務(wù)允許其他事務(wù)繼續(xù)訪問該行數(shù)據(jù),但是未提交的寫事務(wù)將會(huì)禁止其他事務(wù)訪問該行。
Read Uncommitted 未授權(quán)讀取 允許臟讀取,但不允許更新丟失。如果一個(gè)事務(wù)已經(jīng)開始寫數(shù)據(jù),則另外一個(gè)數(shù)據(jù)則不允許同時(shí)進(jìn)行寫操作,但允許其他事務(wù)讀此行數(shù)據(jù)。該隔離級(jí)別可以通過“排他寫鎖”實(shí)現(xiàn)。
隔離級(jí)別的實(shí)現(xiàn)原理:
………………
其他相關(guān)知識(shí)
事務(wù)定義:是指作為單個(gè)邏輯工作單元執(zhí)行的一系列操作。要么全部執(zhí)行,要么全部不執(zhí)行。
事務(wù)四種屬性: ACID 原子性、一致性、隔離性和持久性
A : 要么全都執(zhí)行,要么全都不執(zhí)行
C: 所有的數(shù)據(jù)都保持一致狀態(tài) 賬戶A轉(zhuǎn)出100$給賬戶B , 保證賬戶A -100$,賬戶B +100$
I: 由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。數(shù)據(jù)查看可串行。
D:事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)致命的系統(tǒng)故障也將一直保持。
參考資料:
http://blog.csdn.net/yongyuana01/archive/2009/02/25/3936482.aspx
http://epub.itpub.net/3/4.htm
http://baike.baidu.com/view/1298364.html?fromTaglist
閱讀全文
類別:技術(shù)天地 查看評(píng)論