![Oracle之事務(wù)與并發(fā)控制.ppt_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/22/4417545c-89d0-45d9-a434-ebfb88662081/4417545c-89d0-45d9-a434-ebfb886620811.gif)
![Oracle之事務(wù)與并發(fā)控制.ppt_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/22/4417545c-89d0-45d9-a434-ebfb88662081/4417545c-89d0-45d9-a434-ebfb886620812.gif)
![Oracle之事務(wù)與并發(fā)控制.ppt_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/22/4417545c-89d0-45d9-a434-ebfb88662081/4417545c-89d0-45d9-a434-ebfb886620813.gif)
![Oracle之事務(wù)與并發(fā)控制.ppt_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/22/4417545c-89d0-45d9-a434-ebfb88662081/4417545c-89d0-45d9-a434-ebfb886620814.gif)
![Oracle之事務(wù)與并發(fā)控制.ppt_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/22/4417545c-89d0-45d9-a434-ebfb88662081/4417545c-89d0-45d9-a434-ebfb886620815.gif)
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第十一章事務(wù)與并發(fā)控制,當(dāng)用戶建立與數(shù)據(jù)庫的會話后,用戶就可以對數(shù)據(jù)庫的進(jìn)行操作,而用戶對數(shù)據(jù)庫的操作是通過一個(gè)個(gè)事務(wù)來進(jìn)行的。事務(wù)確保用戶對數(shù)據(jù)庫邏輯操作的完整性和一致性,這里的邏輯操作是指用戶根據(jù)業(yè)務(wù)邏輯而進(jìn)行的一系列操作。,本章學(xué)習(xí)目標(biāo):,事務(wù)的概念,主要了解事務(wù)的ACID特性、處理過程。在Oracle中設(shè)置事務(wù)的隔性層事務(wù)處理語句事務(wù)的并發(fā)控制最基本鎖的作用和使用死鎖的發(fā)生鎖定的多粒度性O(shè)racle中的多粒度意向鎖,11.1了解事務(wù),在介紹Oracle10g的事務(wù)處理之前,首先需要理解什么是數(shù)據(jù)庫中的事務(wù)。事務(wù)其實(shí)是一個(gè)很簡單的概念,用戶每天都會遇到許多現(xiàn)實(shí)生活中類似事務(wù)的示例。例如,商業(yè)活動的中的交易,對于任何一筆交易來說,都涉及兩個(gè)基本動作:一手交錢和一手交貨。這兩個(gè)動作構(gòu)成了一個(gè)完整的商業(yè)交易,缺一不可。也就是說,這兩個(gè)動作都成功發(fā)生,說明交易完成;如果只發(fā)生一個(gè)動作,則交易失敗。所以,為了保證交易能夠正常完成,需要某種方法來保證這些操作的整體性,即這些操作要么都成功,要么都失敗。,11.2事務(wù)的ACID特性,一組SQL語句操作要成為事務(wù),數(shù)據(jù)庫管理系統(tǒng)必須保證這組操作的原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability),這就是事務(wù)的ACID特性。,11.2.1原子性(Atomicity),事務(wù)的原子性是指事務(wù)中包含的所有操作,要么全做,要么全不做;是一個(gè)最小和不可分割(原子)的操作,以確保數(shù)據(jù)庫的一致性。例如:用戶SCOTT在同一個(gè)銀行有A,B兩個(gè)帳號,分別存有2000元和1000元,這時(shí)候SCOTT使用A帳號轉(zhuǎn)賬500元到B帳號,轉(zhuǎn)賬的時(shí)候先從A帳號扣掉500,A的帳號現(xiàn)在只有1500,B帳號在同一時(shí)刻只有1000元,這時(shí)候必須在B帳號增加500元,帳號數(shù)據(jù)才是正確的,如果在B帳號增加500元的操作的不成功,那么必須在A帳號上的操作必須回滾,以確保帳號的數(shù)據(jù)的完整性。所以我們把這兩個(gè)對數(shù)據(jù)庫的操作(insert,delete,update)做為一個(gè)操作單元,它們是不能分割的,即事務(wù)的原子性。(注意:存儲過程與觸發(fā)器都是經(jīng)過了原子處理。),11.2.2一致性(Consistency),所謂一致性是指數(shù)據(jù)庫中事務(wù)操作前和事務(wù)處理后,其中的數(shù)據(jù)必須都滿足業(yè)務(wù)規(guī)則約束。如上述的例子,轉(zhuǎn)賬前后的總金額必須相同。雖然在事務(wù)的過程會出現(xiàn)短暫的不一致,這也是暫時(shí)的,當(dāng)事務(wù)提交時(shí),數(shù)據(jù)庫必須恢復(fù)到一致狀態(tài)。,11.2.3隔離性(Isolation),隔離性是數(shù)據(jù)庫允許多個(gè)并發(fā)事務(wù)同時(shí)對其中的數(shù)據(jù)進(jìn)行讀寫和修改能力,隔離性可以防止多個(gè)事務(wù)在并發(fā)執(zhí)行時(shí),由于它們的操作命令交叉執(zhí)行而導(dǎo)致數(shù)據(jù)的不一致狀態(tài)。,11.2.4持久性(Durability),事務(wù)的持久性表示為:當(dāng)事務(wù)處理結(jié)束后,該事務(wù)對數(shù)據(jù)的修改是永久的,即使是系統(tǒng)遇到故障的情況下也不會丟失的。,11.3事務(wù)控制語句,在Oracle中沒有提供開始事務(wù)處理語句,所有的事務(wù)都是隱式開始的。也就是說,在Oracle中用戶不可以顯式使用命令來開始一個(gè)事務(wù)。Oracle認(rèn)為第一條修改數(shù)據(jù)庫的語句,或者一些要求事務(wù)處理的場合都是事務(wù)隱式的開始。但是,當(dāng)用戶想要終止一個(gè)事務(wù)處理時(shí),必須顯式使用COMMIT和ROLLBACK語句結(jié)束。針對事務(wù)的ACID特點(diǎn),Oracle提供了如下語句對事務(wù)進(jìn)行控制:SETTRANSACTION設(shè)置事務(wù)的屬性SETCONSTRAINS在當(dāng)前事務(wù)中設(shè)置約束模式SAVEPOINT在事務(wù)中建立一個(gè)存儲點(diǎn)RELEASESAVEPOINTROLLBACKCOMMIT,11.3.1設(shè)置事務(wù)屬性,SETTRANSACTION該語句可用來設(shè)置事務(wù)各種屬性,而且是在事務(wù)處理中使用的第一個(gè)語句。它可以讓用戶對事務(wù)以下的屬性進(jìn)行設(shè)置:指定事務(wù)的隔離層規(guī)定事務(wù)回滾時(shí)所使用的存儲空間命名事務(wù)(注意:SETTRANSACTION只對當(dāng)前要處理的事務(wù)進(jìn)行設(shè)置,當(dāng)事務(wù)結(jié)束時(shí),對事務(wù)的屬性的設(shè)置也將失效),事務(wù)隔離層定義了一個(gè)事務(wù)與其他事務(wù)的隔離程度。在并發(fā)事務(wù)中會發(fā)生如下異常:錯(cuò)讀錯(cuò)讀就是事務(wù)A對數(shù)據(jù)進(jìn)行修改,而另外事務(wù)B讀取了修改后的數(shù)據(jù),由于某種原因A取消了對數(shù)據(jù)的修改,使數(shù)據(jù)返回到原來的狀態(tài),而B原來讀取的數(shù)據(jù)與數(shù)據(jù)庫的數(shù)據(jù)不符。非重復(fù)讀是指事務(wù)A讀取了數(shù)據(jù),而事務(wù)B隨后更改了該數(shù)據(jù),而A再次讀取該數(shù)據(jù)時(shí),就會發(fā)現(xiàn)數(shù)據(jù)已經(jīng)變化,同一個(gè)事務(wù)前后兩次讀取的數(shù)據(jù)不相同。假讀事務(wù)A基于某個(gè)條件查找數(shù)據(jù)后,事務(wù)B更新了同一個(gè)表中的數(shù)據(jù),當(dāng)A再次根據(jù)相同的搜索條件返回了不同的行。,上述三種異常的發(fā)生,都與事務(wù)的隔離層的設(shè)置有關(guān)。選擇隔離層:READCOMMITTED這是Oracle默認(rèn)的隔離層SERIALIZABLE序列化,事務(wù)與事務(wù)完全隔開READONLY和READWRITE當(dāng)使用READONLY選項(xiàng)時(shí),事務(wù)不能有任何修改數(shù)據(jù)庫中數(shù)據(jù)的語句。它是SERIALIZABLE的子集。READWRITE是默認(rèn)設(shè)置。,建立SETTRANSACTION語句SETTRANSACTIONREADONLYSETTRANSACTIONREADWRITESETTRANSACTIONISOLATIONLEVELCOMMITTEDSETTRANSACTIONISOLATIONLEVELSERIALIZABLE對于大部分應(yīng)用來說,READCOMMITTED是最合適的隔離層。雖然也存在非重復(fù)讀和假讀現(xiàn)象,但是它能提供較高的并發(fā)性。,11.3.2結(jié)束事務(wù),雖然Oracle采用隱式開始一個(gè)事務(wù),在結(jié)束時(shí)必須使用相關(guān)的事務(wù)控制語句顯式結(jié)束,下列情況Oracle會認(rèn)為一個(gè)事務(wù)結(jié)束:COMMITROLLBACK如有事務(wù)中使用了存儲點(diǎn),則只取消存儲點(diǎn)后的事務(wù)處理,而且事務(wù)并不會終止DDL執(zhí)行時(shí)(意味著前面的DML操作已經(jīng)COMMIT)用戶斷開連接時(shí)(disconn)用戶進(jìn)程意外,這時(shí)用戶當(dāng)前的事務(wù)被回滾,11.3.3存儲點(diǎn),在事務(wù)過程中,如果發(fā)生了錯(cuò)誤并用rollback進(jìn)行了回滾,則在整個(gè)事務(wù)處理中對數(shù)據(jù)所做的所有修改都將被撤銷。這對一個(gè)較小的事務(wù)時(shí)并沒有什么問題。但是事務(wù)非常龐大時(shí),這將浪費(fèi)大量的資源,解決這個(gè)問題的方法就是使用存儲點(diǎn)。,11.4并發(fā)控制,對于多用戶數(shù)據(jù)庫系統(tǒng)而言,當(dāng)多個(gè)用戶并發(fā)地操作時(shí),會產(chǎn)生多個(gè)事務(wù)同時(shí)操作同一數(shù)據(jù)的情況。若對并發(fā)操作不加控制就可能會發(fā)生讀取和寫入不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。所以數(shù)據(jù)庫管理系統(tǒng)必須提供并發(fā)控制機(jī)制。因此,一個(gè)數(shù)據(jù)庫管理系統(tǒng)性能的優(yōu)劣,很大一部分取決于并發(fā)控制。所謂并發(fā)控制是指要用正確的方式實(shí)現(xiàn)事務(wù)的并發(fā)操作,避免造成數(shù)據(jù)的不一致性。為了維護(hù)事務(wù)的一致性,Oracle使用了鎖機(jī)制防止其他用戶修改另外一個(gè)未完成事務(wù)中的數(shù)據(jù)。,11.4.1鎖,鎖是一種控制共享資源并發(fā)訪問的一種機(jī)制。比如事務(wù)T1要訪問某個(gè)數(shù)據(jù)表,在它訪問前需要對該數(shù)據(jù)表加鎖。此時(shí)事務(wù)T2要訪問該數(shù)據(jù)表時(shí)必須等到T1對該數(shù)據(jù)表解鎖后才能訪問。鎖是Oracle自動管理的,也可由用戶使用LOCKTABLE顯式對要訪問的資源加鎖,事務(wù)的開始和結(jié)束決定了鎖的持有和釋放。Oracle中的鎖可分成三類:DML鎖DDL鎖內(nèi)部鎖,11.4.2鎖模式,事務(wù)對數(shù)據(jù)庫的操作可以概括為讀和寫,當(dāng)兩個(gè)事務(wù)對同一個(gè)數(shù)據(jù)項(xiàng)進(jìn)行操作時(shí),可能的情況包括:讀-讀、寫-讀、讀-寫、寫-寫。除了讀-讀,其它都可能導(dǎo)致數(shù)據(jù)的不一致,因此要通過不同模式的鎖來避免數(shù)據(jù)不一致的發(fā)生。,共享鎖:locktableempinsharemode;排他鎖:locktabledeptinexclusivemode;行級共享鎖:locktablesalgradeinrowsharemode;行級排他鎖:locktableempinrowexclusivemode;共享行級排他鎖:locktableempinsharerowexclusivemode;,11.5鎖粒度,鎖粒度是指被鎖定的數(shù)據(jù)對象的大小稱為鎖粒度。鎖粒度與數(shù)據(jù)庫系統(tǒng)的并發(fā)度和并發(fā)控制的開銷密切相關(guān)。鎖粒度越大,數(shù)據(jù)庫中所能夠使用的資源也就越少,并發(fā)度也就越小,系統(tǒng)開銷也就越??;反之,鎖的粒度越小,并發(fā)度也就越大,但系統(tǒng)的開銷也就越大。一般來講,數(shù)據(jù)庫中鎖的粒度可以分為4個(gè)級別:數(shù)據(jù)庫級、表級、行級和列級,11.5.1TX鎖(行級鎖、事務(wù)鎖),TX鎖定本義是Transaction鎖(行級鎖、事務(wù)鎖),當(dāng)一個(gè)事務(wù)執(zhí)行更新數(shù)據(jù)操作時(shí),它即獲得一個(gè)TX鎖,直至該事務(wù)結(jié)束時(shí)才釋放該鎖。一個(gè)TX鎖可以鎖定該事務(wù)涉及的多行數(shù)據(jù)。TX鎖是Oracle支持鎖定的最低級別。在更新過程中,行級別鎖會阻止這一行上的任何其他DML操作發(fā)生。,11.5.2TM鎖(表級鎖),Oracle的行級鎖雖然只有一種(TX),但是TM(表級鎖)類型共有5種鎖模式:S鎖X鎖RS鎖RX鎖SRX鎖由于表是由行組成的,所以向某個(gè)表加鎖時(shí),Oracle一方面需要檢查鎖與表上原有的表級鎖是否相容,另一方面還要檢查鎖是否與表中的每一行的鎖是否相容。,11.5.3數(shù)據(jù)庫級鎖,數(shù)據(jù)庫級別的鎖將鎖定整個(gè)數(shù)據(jù)庫,以禁止任何新會話和新事務(wù)??梢允褂靡幌抡Z句更改數(shù)據(jù)庫的限制性(數(shù)據(jù)庫級鎖)模式中:altersyst
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子書閱讀器項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國獨(dú)立收線機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年機(jī)車空調(diào)電源整機(jī)測試儀項(xiàng)目可行性研究報(bào)告
- 2025年室內(nèi)型溫度傳感器/變送器項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國剛性防水干混砂漿行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年沖浪板項(xiàng)目可行性研究報(bào)告
- 2025年上嘴過濾瓶項(xiàng)目可行性研究報(bào)告
- 2025至2030年高光水性高耐磨上光油項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年金屬瓷牙項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年耐磨高錳鋼軋臼壁項(xiàng)目投資價(jià)值分析報(bào)告
- 【理特咨詢】2024生成式人工智能GenAI在生物醫(yī)藥大健康行業(yè)應(yīng)用進(jìn)展報(bào)告
- 2025年中國中煤能源股份有限公司招聘筆試參考題庫含答案解析
- 2024年度碳陶剎車盤分析報(bào)告
- 2025年春新外研版(三起)英語三年級下冊課件 Unit6第1課時(shí)Startup
- 2025年1月 浙江首考英語試卷
- 十首最美的唐詩
- 2024年中考二輪專題復(fù)習(xí)道德與法治主觀題答題技巧(小論文)之演講稿
- 質(zhì)檢工作計(jì)劃書2025質(zhì)檢部工作計(jì)劃范文
- 施工現(xiàn)場5S管理規(guī)范
- 《纏論的實(shí)戰(zhàn)技法》課件
- 新版標(biāo)準(zhǔn)化機(jī)電專業(yè)管理體系解讀課件
評論
0/150
提交評論