版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.提供的數(shù)據(jù)庫(kù)事務(wù)隔離級(jí)別System.Data.IsolationLevel枚舉用于指定連接的事務(wù)鎖定行為,它包含如下枚舉:成員名稱成員名稱說(shuō)明說(shuō)明Chaos無(wú)法改寫隔離級(jí)別更高的事務(wù)中的掛起的更改。ReadCommitted在正在讀取數(shù)據(jù)時(shí)保持共享鎖,以避免臟讀,但是在事務(wù)結(jié)束之前可以更改數(shù)據(jù),從而導(dǎo)致不可重復(fù)的讀取或幻像數(shù)據(jù)。ReadUncommitted可以進(jìn)行臟讀,意思是說(shuō),不發(fā)布共享鎖,也不接受獨(dú)占鎖。RepeatableR
2、ead在查詢中使用的所有數(shù)據(jù)上放置鎖,以防止其他用戶更新這些數(shù)據(jù)。防止不可重復(fù)的讀取,但是仍可以有幻像行。Serializable在DataSet上放置范圍鎖,以防止在事務(wù)完成之前由其他用戶更新行或向數(shù)據(jù)集中插入行。Snapshot通過(guò)在一個(gè)應(yīng)用程序正在修改數(shù)據(jù)時(shí)存儲(chǔ)另一個(gè)應(yīng)用程序可以讀取的相同數(shù)據(jù)版本來(lái)減少阻止。表示您無(wú)法從一個(gè)事務(wù)中看到在其他事務(wù)中進(jìn)行的更改,即便重新查詢也是如此。Unspecified正在使用與指定隔離級(jí)別不同的隔
3、離級(jí)別,但是無(wú)法確定該級(jí)別。當(dāng)使用OdbcTransaction時(shí),如果不設(shè)置IsolationLevel或者將IsolationLevel設(shè)置為Unspecied,事務(wù)將根據(jù)基礎(chǔ)ODBC驅(qū)動(dòng)程序的默認(rèn)隔離級(jí)別來(lái)執(zhí)行。說(shuō)心里話,平時(shí)就是照著例子代碼抄,也沒(méi)理會(huì)這些值。不過(guò)要想真的理解并能靈活運(yùn)用,看MSDN的解釋估計(jì)感到困惑的不只我一個(gè)。從今天起,我決定要把這些值的真正含義搞清楚。首先,還是要去研究一下SQLServer的鎖機(jī)制:SQL
4、SERVER鎖的機(jī)制SQLserver的所有活動(dòng)都會(huì)產(chǎn)生鎖。鎖定的單元越小,就越能越能提高并發(fā)處理能力,但是管理鎖的開銷越大。如何找到平衡點(diǎn),使并發(fā)性和性能都可接受是SQLServer的難點(diǎn)。SQLServer有如下幾種瑣:1、共享鎖用于只讀操作(),鎖定共享的資源。共享鎖不會(huì)阻止其他用戶讀,但是阻止其他的用戶寫和修改。2、更新鎖更新鎖是一種意圖鎖,當(dāng)一個(gè)事務(wù)已經(jīng)請(qǐng)求共享瑣后并試圖請(qǐng)求一個(gè)獨(dú)占鎖的時(shí)候發(fā)生更新瑣。例如當(dāng)兩個(gè)事務(wù)在幾行數(shù)據(jù)
5、行上都使用了共享鎖,并同時(shí)試圖獲取獨(dú)占鎖以執(zhí)行更新操作時(shí),就發(fā)生了死鎖:都在等待對(duì)方釋放共享鎖而實(shí)現(xiàn)獨(dú)占鎖。更新鎖的目的是只讓一個(gè)事務(wù)獲得更新鎖,防止這種情況的發(fā)生。3、獨(dú)占鎖一次只能有一個(gè)獨(dú)占鎖用在一個(gè)資源上,并且阻止其他所有的鎖包括共享縮。寫是獨(dú)占鎖,可以有效的防止’臟讀’。數(shù)據(jù)的情況下并行訪問(wèn)問(wèn)題就變得復(fù)雜起來(lái)了。顯然,數(shù)據(jù)庫(kù)通常只允許唯一用戶一次修改特定的數(shù)據(jù)。當(dāng)某一用戶開始修改某塊數(shù)據(jù)時(shí),SQLServer能很快地鎖定數(shù)據(jù),阻
6、止其他用戶對(duì)這塊數(shù)據(jù)進(jìn)行更新,直到修改該數(shù)據(jù)的第一位用戶完成其操作并提交交易或者回滾。但是,當(dāng)某一位用戶正在修改某塊數(shù)據(jù)時(shí)假設(shè)另一位用戶又正想查詢?cè)摂?shù)據(jù)的信息時(shí)會(huì)發(fā)生什么情況呢?2、通常情況下,一個(gè)連接在修改數(shù)據(jù)塊時(shí)別的連接也不能查詢這個(gè)數(shù)據(jù)塊,直到解鎖。反之亦然:讀的時(shí)候不能寫和修改。這個(gè)方案會(huì)降低系統(tǒng)的性能和效率,盡管現(xiàn)在是行級(jí)鎖(7.0以前是鎖頁(yè)甚至是鎖表),如果你一次修改多行數(shù)據(jù),SQLServer則會(huì)把數(shù)據(jù)鎖定范圍提升到頁(yè)級(jí)別
7、乃至鎖定整個(gè)數(shù)據(jù)表,從而不必針對(duì)每一記錄跟蹤和維護(hù)各自的數(shù)據(jù)鎖,這樣能加快修改的速度,消耗小的服務(wù)器資源,但是并發(fā)性就差了。3、一個(gè)連接寫的時(shí)候,另一個(gè)連接可以寫,但是不得讀4、多個(gè)連接可以同時(shí)讀同一行。所以鎖發(fā)生在讀、寫的競(jìng)爭(zhēng)上。5、設(shè)置事務(wù)的級(jí)別SETTRANSACTIONISOLATIONLEVELA、READCOMMITTED:指定在讀取數(shù)據(jù)時(shí)控制共享鎖以避免臟讀,但數(shù)據(jù)可在事務(wù)結(jié)束前更改,從而產(chǎn)生不可重復(fù)讀取或幻像數(shù)據(jù)。該選項(xiàng)
8、是SQLServer的默認(rèn)值。B、READUNCOMMITTED:執(zhí)行臟讀或0級(jí)隔離鎖定,這表示不發(fā)出共享鎖,也不接受排它鎖。當(dāng)設(shè)置該選項(xiàng)時(shí),可以對(duì)數(shù)據(jù)執(zhí)行未提交讀或臟讀;在事務(wù)結(jié)束前可以更改數(shù)據(jù)內(nèi)的數(shù)值,行也可以出現(xiàn)在數(shù)據(jù)集中或從數(shù)據(jù)集消失。這是四個(gè)隔離級(jí)別中限制最小的級(jí)別。C、REPEATABLEREAD:鎖定查詢中使用的所有數(shù)據(jù)以防止其他用戶更新數(shù)據(jù),但是其他用戶可以將新的幻像行插入數(shù)據(jù)集,且幻像行包括在當(dāng)前事務(wù)的后續(xù)讀取中。因?yàn)?/p>
9、并發(fā)低于默認(rèn)隔離級(jí)別,所以應(yīng)只在必要時(shí)才使用該選項(xiàng)。D、SERIALIZABLE:在數(shù)據(jù)集上放置一個(gè)范圍鎖,以防止其他用戶在事務(wù)完成之前更新數(shù)據(jù)集或?qū)⑿胁迦霐?shù)據(jù)集內(nèi)。這是四個(gè)隔離級(jí)別中限制最大的級(jí)別。因?yàn)椴l(fā)級(jí)別較低,所以應(yīng)只在必要時(shí)才使用該選項(xiàng)。該選項(xiàng)的作用與在事務(wù)內(nèi)所有語(yǔ)句中的所有表上設(shè)置HOLDLOCK相同。注釋一次只能設(shè)置這些選項(xiàng)中的一個(gè),而且設(shè)置的選項(xiàng)將一直對(duì)那個(gè)連接保持有效,直到顯式更改該選項(xiàng)為止。這是默認(rèn)行為,除非在語(yǔ)句的
10、FROM子句中在表級(jí)上指定優(yōu)化選項(xiàng)。SETTRANSACTIONISOLATIONLEVEL的設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。術(shù)語(yǔ)解釋:在一個(gè)程序中,依據(jù)事務(wù)的隔離級(jí)別將會(huì)有三種情況發(fā)生?!襞K讀:一個(gè)事務(wù)會(huì)讀進(jìn)還沒(méi)有被另一個(gè)事務(wù)提交的數(shù)據(jù),所以你會(huì)看到一些最后被另一個(gè)事務(wù)回滾掉的數(shù)據(jù)?!糇x值不可復(fù)現(xiàn):一個(gè)事務(wù)讀進(jìn)一條記錄,另一個(gè)事務(wù)更改了這條記錄并提交完畢,這時(shí)候第一個(gè)事務(wù)再次讀這條記錄時(shí),它已經(jīng)改變了?!艋糜白x:一個(gè)事務(wù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c#數(shù)據(jù)庫(kù)事務(wù)
- 聯(lián)邦數(shù)據(jù)庫(kù)事務(wù)研究.pdf
- 內(nèi)存數(shù)據(jù)庫(kù)事務(wù)并發(fā)控制研究和設(shè)計(jì).pdf
- 基于TUXEDO事務(wù)的數(shù)據(jù)庫(kù)系統(tǒng).pdf
- 數(shù)據(jù)庫(kù)屬性謂詞鎖的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 事務(wù)級(jí)入侵容忍數(shù)據(jù)庫(kù)的控制和修復(fù)策略研究.pdf
- 大一數(shù)據(jù)庫(kù)題 數(shù)據(jù)庫(kù)和表
- 第8章 數(shù)據(jù)保護(hù)(事務(wù)和鎖)
- 實(shí)時(shí)內(nèi)存數(shù)據(jù)庫(kù)的事務(wù)調(diào)度與數(shù)據(jù)恢復(fù)研究.pdf
- 移動(dòng)數(shù)據(jù)庫(kù)事務(wù)模型的研究及實(shí)現(xiàn).pdf
- 主動(dòng)數(shù)據(jù)庫(kù)中嵌套事務(wù)的并行處理.pdf
- NXD數(shù)據(jù)庫(kù)事務(wù)及并發(fā)機(jī)制的研究.pdf
- 在.net中如何使用oracle數(shù)據(jù)庫(kù)事務(wù)
- 時(shí)空數(shù)據(jù)庫(kù)的事務(wù)處理技術(shù).pdf
- 數(shù)據(jù)庫(kù)網(wǎng)格的事務(wù)并發(fā)控制算法研究.pdf
- 面向?qū)ο髷?shù)據(jù)庫(kù)的事務(wù)處理.pdf
- 網(wǎng)格數(shù)據(jù)庫(kù)中事務(wù)提交協(xié)議研究.pdf
- 分布式數(shù)據(jù)庫(kù)事務(wù)支持.pdf
- 數(shù)據(jù)庫(kù)檢索acs數(shù)據(jù)庫(kù)
- 實(shí)時(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)及實(shí)現(xiàn)和事務(wù)調(diào)度算法的研究.pdf
評(píng)論
0/150
提交評(píng)論