事務(wù)隔離級(jí)別

事務(wù)隔離級(jí)別

ID:36366693

大?。?74.50 KB

頁(yè)數(shù):13頁(yè)

時(shí)間:2019-05-10

事務(wù)隔離級(jí)別_第1頁(yè)
事務(wù)隔離級(jí)別_第2頁(yè)
事務(wù)隔離級(jí)別_第3頁(yè)
事務(wù)隔離級(jí)別_第4頁(yè)
事務(wù)隔離級(jí)別_第5頁(yè)
資源描述:

《事務(wù)隔離級(jí)別》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、事務(wù)隔離級(jí)別  在JDBC操作中,為了有效保證并發(fā)讀取數(shù)據(jù)的正確性,提出的事務(wù)隔離級(jí)別的概念。  問(wèn)題的提出:數(shù)據(jù)庫(kù)是要被廣大客戶所共享訪問(wèn)的,那么在數(shù)據(jù)庫(kù)操作過(guò)程中很可能出現(xiàn)以下幾種不確定情況?!  窀聛G失(Lostupdate):兩個(gè)事務(wù)都同時(shí)更新一行數(shù)據(jù),但是第二個(gè)事務(wù)卻中途失敗退出,導(dǎo)致對(duì)數(shù)據(jù)的兩個(gè)修改都失效了。這是因?yàn)橄到y(tǒng)沒(méi)有執(zhí)行任何的鎖操作,因此并發(fā)事務(wù)并沒(méi)有被隔離開(kāi)來(lái)?!  衽K讀(DirtyReads):一個(gè)事務(wù)開(kāi)始讀取了某行數(shù)據(jù),但是另外一個(gè)事務(wù)已經(jīng)更新了此數(shù)據(jù)但沒(méi)有能夠及時(shí)提交。這是

2、相當(dāng)危險(xiǎn)的,因?yàn)楹芸赡芩械牟僮鞫急换貪L?!  癫豢芍貜?fù)讀(Non-repeatableReads):一個(gè)事務(wù)對(duì)同一行數(shù)據(jù)重復(fù)讀取兩次,但是卻得到了不同的結(jié)果。例如,在兩次讀取的中途,有另外一個(gè)事務(wù)對(duì)該行數(shù)據(jù)進(jìn)行了修改,并提交?!  駜纱胃聠?wèn)題(Secondlostupdatesproblem):無(wú)法重復(fù)讀取的特例。有兩個(gè)并發(fā)事務(wù)同時(shí)讀取同一行數(shù)據(jù),然后其中一個(gè)對(duì)它進(jìn)行修改提交,而另一個(gè)也進(jìn)行了修改提交。這就會(huì)造成第一次寫(xiě)操作失效?!  窕米x(PhantomReads):事務(wù)在操作過(guò)程中進(jìn)行兩次查詢,

3、第二次查詢的結(jié)果包含了第一次查詢中未出現(xiàn)的數(shù)據(jù)(這里并不要求兩次查詢的SQL語(yǔ)句相同)。這是因?yàn)樵趦纱尾樵冞^(guò)程中有另外一個(gè)事務(wù)插入數(shù)據(jù)造成的?! 〗鉀Q方案:為了避免上面出現(xiàn)的幾種情況,在標(biāo)準(zhǔn)SQL規(guī)范中,定義了4個(gè)事務(wù)隔離級(jí)別,不同的隔離級(jí)別對(duì)事務(wù)的處理不同?!  裎词跈?quán)讀取,也稱為讀未提交(ReadUncommitted):允許臟讀取,但不允許更新丟失。如果一個(gè)事務(wù)已經(jīng)開(kāi)始寫(xiě)數(shù)據(jù),則另外一個(gè)數(shù)據(jù)則不允許同時(shí)進(jìn)行寫(xiě)操作,但允許其他事務(wù)讀此行數(shù)據(jù)。該隔離級(jí)別可以通過(guò)“排他寫(xiě)鎖”實(shí)現(xiàn)?!  袷跈?quán)讀取,也稱為

4、讀提交(ReadCommitted):允許不可重復(fù)讀取,但不允許臟讀取。這可以通過(guò)“瞬間共享讀鎖”和“排他寫(xiě)鎖”實(shí)現(xiàn)。讀取數(shù)據(jù)的事務(wù)允許其他事務(wù)繼續(xù)訪問(wèn)該行數(shù)據(jù),但是未提交的寫(xiě)事務(wù)將會(huì)禁止其他事務(wù)訪問(wèn)該行。  ●可重復(fù)讀?。≧epeatableRead):禁止不可重復(fù)讀取和臟讀取,但是有時(shí)可能出現(xiàn)幻影數(shù)據(jù)。這可以通過(guò)“共享讀鎖”和“排他寫(xiě)鎖”實(shí)現(xiàn)。讀取數(shù)據(jù)的事務(wù)將會(huì)禁止寫(xiě)事務(wù)(但允許讀事務(wù)),寫(xiě)事務(wù)則禁止任何其他事務(wù)?!  裥蛄谢⊿erializable):提供嚴(yán)格的事務(wù)隔離。它要求事務(wù)序列化執(zhí)行,事

5、務(wù)只能一個(gè)接著一個(gè)地執(zhí)行,但不能并發(fā)執(zhí)行。如果僅僅通過(guò)“行級(jí)鎖”是無(wú)法實(shí)現(xiàn)事務(wù)序列化的,必須通過(guò)其他機(jī)制保證新插入的數(shù)據(jù)不會(huì)被剛執(zhí)行查詢操作的事務(wù)訪問(wèn)到?! 「綦x級(jí)別越高,越能保證數(shù)據(jù)的完整性和一致性,但是對(duì)并發(fā)性能的影響也越大。對(duì)于多數(shù)應(yīng)用程序,可以優(yōu)先考慮把數(shù)據(jù)庫(kù)系統(tǒng)的隔離級(jí)別設(shè)為ReadCommitted,它能夠避免臟讀取,而且具有較好的并發(fā)性能。盡管它會(huì)導(dǎo)致不可重復(fù)讀、虛讀和第二類丟失更新這些并發(fā)問(wèn)題,在可能出現(xiàn)這類問(wèn)題的個(gè)別場(chǎng)合,可以由應(yīng)用程序采用悲觀鎖或樂(lè)觀鎖來(lái)控制。關(guān)于可重復(fù)讀:?jiǎn)栴}:“可

6、重復(fù)讀”一般被解釋成“是個(gè)事務(wù)多次讀取數(shù)據(jù),讀的結(jié)果一致,不會(huì)讀到別的事務(wù)提交的數(shù)據(jù)”。。。請(qǐng)問(wèn):這個(gè)解釋真的正確嗎?1是另一個(gè)事務(wù)提交了,這個(gè)事務(wù)讀不到,還是說(shuō):2在這個(gè)事務(wù)沒(méi)有還沒(méi)有commit之前,另外一個(gè)事務(wù)不能進(jìn)行update,insert,delete操作??答案是1還是2?或者都不是,請(qǐng)高手賜教了。。答案是2可重復(fù)讀隔離級(jí)別是最嚴(yán)格的隔離級(jí)別。在該隔離級(jí)別下,一個(gè)事務(wù)的影響完全與其他并發(fā)事務(wù)隔離,臟讀、不可重復(fù)的讀、幻像讀現(xiàn)象都不會(huì)發(fā)生。當(dāng)使用可重復(fù)讀隔離級(jí)別時(shí),在事務(wù)執(zhí)行期間會(huì)鎖定該事務(wù)

7、以任何方式引用的所有行。因此,如果在同一個(gè)事務(wù)中發(fā)出同一個(gè)SELECT語(yǔ)句兩次或更多次,那么產(chǎn)生的結(jié)果數(shù)據(jù)集總是相同的。因此,使用可重復(fù)讀隔離級(jí)別的事務(wù)可以多次檢索同一行集,并對(duì)它們執(zhí)行任意操作,直到提交或回滾操作終止該事務(wù)。但是,在事務(wù)存在期間,不允許其他事務(wù)執(zhí)行會(huì)影響這個(gè)事務(wù)正在訪問(wèn)的任何行的插入、更新或刪除操作。為了確保這種行為不會(huì)發(fā)生,鎖定該事務(wù)所引用的每一行--而不是僅鎖定被實(shí)際檢索或修改的那些行。因此,如果一個(gè)事務(wù)掃描了1000行,但只檢索10行,那么它所掃描的1000行(而不僅是被檢索的1

8、0行)都會(huì)被鎖定。隔離級(jí)別中的重復(fù)讀是是指在第一次讀出數(shù)據(jù)后數(shù)據(jù)被修改了但第二次去讀為保證數(shù)據(jù)一致,還是與第一次讀的一樣,這是比較高的隔離級(jí)別。還有一個(gè)比它高的幻影讀是即使你添加列等操作都讀不出來(lái)[轉(zhuǎn)載]微軟SQLServer事務(wù)隔離級(jí)別實(shí)例簡(jiǎn)介作者:EdisonZhu??來(lái)源:博客園??發(fā)布時(shí)間:2009-11-1223:56??閱讀:173次??原文鏈接??[收藏]??源文:?http://untitled.spaces.live.co

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。