事務(wù)隔離級別與鎖_第1頁
事務(wù)隔離級別與鎖_第2頁
事務(wù)隔離級別與鎖_第3頁
事務(wù)隔離級別與鎖_第4頁
事務(wù)隔離級別與鎖_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、今天答辯囧態(tài)百出。然后認(rèn)真的把資料分析和整理了下,思路縷清楚了,也把幾個問題制造出來,下次不能再這樣了,啊HOU.l 臟讀出現(xiàn)問題的情況先運(yùn)行事務(wù)在運(yùn)行事務(wù),直到十秒結(jié)束后在運(yùn)行事務(wù),出現(xiàn)臟讀-事務(wù)begin tranupdate lock set A2 = 20 where A1 = 10waitfor delay'00:00:10'rollbacktran-事務(wù)SET TRANSACTION ISOLATION LEVEL READ unCommittedselect * from lock where A1 = 10現(xiàn)象:原數(shù)據(jù)庫數(shù)據(jù)運(yùn)行事務(wù)后是秒內(nèi)再運(yùn)行事務(wù),結(jié)果十秒后

2、在運(yùn)行事務(wù)用提交讀隔離級別解決-事務(wù)SET TRANSACTION ISOLATION LEVEL READ Committedbegin transelect * from lock WHERE A1=10commit tran-事務(wù)SET TRANSACTION ISOLATION LEVEL READ Committedselect * from lock where A1 = 10現(xiàn)象:原數(shù)據(jù)庫數(shù)據(jù)運(yùn)行事務(wù)后10秒內(nèi)再運(yùn)行事務(wù),結(jié)果事務(wù)進(jìn)入等待直到10秒后出現(xiàn)結(jié)果分析:1. 隔離級別為提交讀的事務(wù)在每次查詢時都會申請獲取共享鎖,而未提交讀則不會申請,而是直接執(zhí)行語句2. 在提交讀隔離級

3、別下,事務(wù)讀取數(shù)據(jù)時,對數(shù)據(jù)加上共享鎖,查詢結(jié)束后立刻釋放共享鎖(共享鎖的鎖定時間與事務(wù)的隔離級別有關(guān),見注1),在其他一個或者多個事務(wù)對某數(shù)據(jù)擁有共享鎖期間,無法獲得排它鎖,即無法對數(shù)據(jù)進(jìn)行修改。3. 當(dāng)其他事務(wù)對數(shù)據(jù)不擁有共享鎖時事務(wù)對數(shù)據(jù)進(jìn)行更新操作,將獲得排它鎖,直到事務(wù)提交才將鎖釋放。4. 若某一個事務(wù)獲得排他鎖時,則其他事務(wù)是不能獲得共享鎖的(即排他鎖與共享鎖不能兼容)所以提交讀就保證了不會出現(xiàn)臟讀的情況l 不可重復(fù)讀出現(xiàn)問題的情況T1運(yùn)行到一半,T2運(yùn)行完成之后T1才將事務(wù)提交-事務(wù)T1begin transelect * from lock where A1=10waitfor

4、 delay '00:00:10'select * from lock where A1=10commit tran-事務(wù)T2begin tranupdate lock set A2 = 70 where A1 = 10commit tran結(jié)果為使用可重復(fù)讀(repeatable read)則可以解決這個問題-事務(wù)T1SET TRANSACTION ISOLATION LEVEL repeatable readbegin transelect * from lock where A1=10waitfor delay '00:00:10'select * fro

5、m lock where A1=10commit tran-事務(wù)T2begin tranupdate lock set A2 = 70 where A1 = 10commit tran可重復(fù)讀的上鎖情況是事務(wù)在查詢時候獲取共享鎖,直到事務(wù)提交才將鎖釋放,在此期間其他事務(wù)無法獲得排他鎖,所以無法進(jìn)行更新操作,進(jìn)入等待,知道其他事務(wù)將共享鎖釋放。這樣避免了問題l 幻讀運(yùn)行T3后運(yùn)行在2-10秒內(nèi)運(yùn)行事務(wù)T4-事務(wù)T3begin transelect * from lockwaitfor delay '00:00:10'select * from lockcommit tran-事務(wù)

6、T4begin tranInsert into lock values(99,99)commit tran可串行讀(serializable)僅僅通過“行級鎖”是無法實現(xiàn)事務(wù)序列化的,必須通過其他機(jī)制保證新插入的數(shù)據(jù)不會被剛執(zhí)行查詢操作的事務(wù)訪問到??偨Y(jié):隔離級別越高,越能保證數(shù)據(jù)的完整性和一致性,但是對并發(fā)性能的影響也越大。對于多數(shù)應(yīng)用程序,可以優(yōu)先考慮把數(shù)據(jù)庫系統(tǒng)的隔離級別設(shè)為Read Committed。它能夠避免臟讀取,而且具有較好的并發(fā)性能。盡管它會導(dǎo)致不可重復(fù)讀、虛讀和第二類丟失更新這些并發(fā)問題,在可能出現(xiàn)這類問題的個別場合,可以由應(yīng)用程序采用悲觀鎖或樂觀鎖來控制。注1:共享鎖的鎖定時間與事務(wù)的隔離級別有關(guān),如果隔離級別為Read Committed的默認(rèn)級別,只在讀取(select)的期間保持鎖定,即在查詢出數(shù)據(jù)以后就

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論