下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第十一章 事務與并發(fā)控制,當用戶建立與數(shù)據(jù)庫的會話后,用戶就可以對數(shù)據(jù)庫的進行操作,而用戶對數(shù)據(jù)庫的操作是通過一個個事務來進行的。事務確保用戶對數(shù)據(jù)庫邏輯操作的完整性和一致性,這里的邏輯操作是指用戶根據(jù)業(yè)務邏輯而進行的一系列操作。,本章學習目標:,事務的概念,主要了解事務的ACID特性、處理過程。 在Oracle中設置事務的隔性層 事務處理語句 事務的并發(fā)控制 最基本鎖的作用和使用 死鎖的發(fā)生 鎖定的多粒度性 Oracle中的多粒度意向鎖,11.1 了解事務,在介紹Oracle 10g的事務處理之前,首先需要理解什么是數(shù)據(jù)庫中的事務。事務其實是一個很簡單的概念,用戶每天都會遇到許多現(xiàn)實生活中類
2、似事務的示例。例如,商業(yè)活動的中的交易,對于任何一筆交易來說,都涉及兩個基本動作:一手交錢和一手交貨。這兩個動作構(gòu)成了一個完整的商業(yè)交易,缺一不可。也就是說,這兩個動作都成功發(fā)生,說明交易完成;如果只發(fā)生一個動作,則交易失敗。所以,為了保證交易能夠正常完成,需要某種方法來保證這些操作的整體性,即這些操作要么都成功,要么都失敗。,11.2 事務的ACID特性,一組SQL語句操作要成為事務,數(shù)據(jù)庫管理系統(tǒng)必須保證這組操作的原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability),這就是事務的ACID特性。,11.2.1 原子性(A
3、tomicity),事務的原子性是指事務中包含的所有操作,要么全做,要么全不做;是一個最小和不可分割(原子)的操作,以確保數(shù)據(jù)庫的一致性。 例如:用戶SCOTT在同一個銀行有A,B兩個帳號,分別存有2000元和1000元,這時候SCOTT使用A帳號轉(zhuǎn)賬500元到B帳號,轉(zhuǎn)賬的時候先從A帳號扣掉500,A的帳號現(xiàn)在只有1500,B帳號在同一時刻只有1000元,這時候必須在B帳號增加500元,帳號數(shù)據(jù)才是正確的,如果在B帳號增加500元的操作的不成功,那么必須在A帳號上的操作必須回滾,以確保帳號的數(shù)據(jù)的完整性。所以我們把這兩個對數(shù)據(jù)庫的操作(insert, delete, update)做為一個操
4、作單元,它們是不能分割的,即事務的原子性。(注意:存儲過程與觸發(fā)器都是經(jīng)過了原子處理。),11.2.2 一致性 (Consistency),所謂一致性是指數(shù)據(jù)庫中事務操作前和事務處理后,其中的數(shù)據(jù)必須都滿足業(yè)務規(guī)則約束。如上述的例子,轉(zhuǎn)賬前后的總金額必須相同。雖然在事務的過程會出現(xiàn)短暫的不一致,這也是暫時的,當事務提交時,數(shù)據(jù)庫必須恢復到一致狀態(tài)。,11.2.3 隔離性(Isolation),隔離性是數(shù)據(jù)庫允許多個并發(fā)事務同時對其中的數(shù)據(jù)進行讀寫和修改能力,隔離性可以防止多個事務在并發(fā)執(zhí)行時,由于它們的操作命令交叉執(zhí)行而導致數(shù)據(jù)的不一致狀態(tài)。,11.2.4 持久性 (Durability),事
5、務的持久性表示為:當事務處理結(jié)束后,該事務對數(shù)據(jù)的修改是永久的,即使是系統(tǒng)遇到故障的情況下也不會丟失的。,11.3 事務控制語句,在Oracle中沒有提供開始事務處理語句,所有的事務都是隱式開始的。也就是說,在Oracle中用戶不可以顯式使用命令來開始一個事務。Oracle認為第一條修改數(shù)據(jù)庫的語句,或者一些要求事務處理的場合都是事務隱式的開始。但是,當用戶想要終止一個事務處理時,必須顯式使用COMMIT和ROLLBACK語句結(jié)束。針對事務的ACID特點,Oracle提供了如下語句對事務進行控制: SET TRANSACTION 設置事務的屬性 SET CONSTRAINS 在當前事務中設置約
6、束模式 SAVEPOINT 在事務中建立一個存儲點 RELEASE SAVEPOINT ROLLBACK COMMIT,11.3.1 設置事務屬性,SET TRANSACTION該語句可用來設置事務各種屬性,而且是在事務處理中使用的第一個語句。它可以讓用戶對事務以下的屬性進行設置: 指定事務的隔離層 規(guī)定事務回滾時所使用的存儲空間 命名事務 (注意:SET TRANSACTION 只對當前要處理的事務進行設置,當事務結(jié)束時,對事務的屬性的設置也將失效),事務隔離層定義了一個事務與其他事務的隔離程度。在并發(fā)事務中會發(fā)生如下異常: 錯讀錯讀就是事務A對數(shù)據(jù)進行修改,而另外事務B讀取了修改后的數(shù)據(jù),
7、由于某種原因A取消了對數(shù)據(jù)的修改,使數(shù)據(jù)返回到原來的狀態(tài),而B原來讀取的數(shù)據(jù)與數(shù)據(jù)庫的數(shù)據(jù)不符。 非重復讀是指事務A讀取了數(shù)據(jù),而事務B隨后更改了該數(shù)據(jù),而A再次讀取該數(shù)據(jù)時,就會發(fā)現(xiàn)數(shù)據(jù)已經(jīng)變化,同一個事務前后兩次讀取的數(shù)據(jù)不相同。 假讀事務A基于某個條件查找數(shù)據(jù)后,事務B更新了同一個表中的數(shù)據(jù),當A再次根據(jù)相同的搜索條件返回了不同的行。,上述三種異常的發(fā)生,都與事務的隔離層的設置有關(guān)。 選擇隔離層: READ COMMITTED 這是Oracle默認的隔離層 SERIALIZABLE 序列化,事務與事務完全隔開 READ ONLY 和 READ WRITE當使用READ ONLY選項時,事
8、務不能有任何修改數(shù)據(jù)庫中數(shù)據(jù)的語句。它是SERIALIZABLE的子集。READ WRITE是默認設置。,建立SET TRANSACTION 語句 SET TRANSACTION READ ONLY SET TRANSACTION READ WRITE SET TRANSACTION ISOLATION LEVEL COMMITTED SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 對于大部分應用來說,READ COMMITTED 是最合適的隔離層。雖然也存在非重復讀和假讀現(xiàn)象,但是它能提供較高的并發(fā)性。,11.3.2 結(jié)束事務,雖然Oracle采用隱
9、式開始一個事務,在結(jié)束時必須使用相關(guān)的事務控制語句顯式結(jié)束,下列情況Oracle會認為一個事務結(jié)束: COMMIT ROLLBACK 如有事務中使用了存儲點,則只取消存儲點后的事務處理,而且事務并不會終止 DDL 執(zhí)行時(意味著前面的DML操作已經(jīng)COMMIT) 用戶斷開連接時(disconn) 用戶進程意外,這時用戶當前的事務被回滾,11.3.3 存儲點,在事務過程中,如果發(fā)生了錯誤并用rollback進行了回滾,則在整個事務處理中對數(shù)據(jù)所做的所有修改都將被撤銷。 這對一個較小的事務時并沒有什么問題。但是事務非常龐大時,這將浪費大量的資源,解決這個問題的方法就是使用存儲點。,11.4 并發(fā)控
10、制,對于多用戶數(shù)據(jù)庫系統(tǒng)而言,當多個用戶并發(fā)地操作時,會產(chǎn)生多個事務同時操作同一數(shù)據(jù)的情況。若對并發(fā)操作不加控制就可能會發(fā)生讀取和寫入不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。所以數(shù)據(jù)庫管理系統(tǒng)必須提供并發(fā)控制機制。因此,一個數(shù)據(jù)庫管理系統(tǒng)性能的優(yōu)劣,很大一部分取決于并發(fā)控制。 所謂并發(fā)控制是指要用正確的方式實現(xiàn)事務的并發(fā)操作,避免造成數(shù)據(jù)的不一致性。為了維護事務的一致性,Oracle使用了鎖機制防止其他用戶修改另外一個未完成事務中的數(shù)據(jù)。,11.4.1 鎖,鎖是一種控制共享資源并發(fā)訪問的一種機制。比如事務T1要訪問某個數(shù)據(jù)表,在它訪問前需要對該數(shù)據(jù)表加鎖。此時事務T2要訪問該數(shù)據(jù)表時必須等到T1對該
11、數(shù)據(jù)表解鎖后才能訪問。 鎖是Oracle自動管理的,也可由用戶使用LOCK TABLE顯式對要訪問的資源加鎖,事務的開始和結(jié)束決定了鎖的持有和釋放。Oracle中的鎖可分成三類: DML鎖 DDL鎖 內(nèi)部鎖,11.4.2 鎖模式,事務對數(shù)據(jù)庫的操作可以概括為讀和寫,當兩個事務對同一個數(shù)據(jù)項進行操作時,可能的情況包括:讀-讀、寫-讀、讀-寫、寫-寫。除了讀-讀,其它都可能導致數(shù)據(jù)的不一致,因此要通過不同模式的鎖來避免數(shù)據(jù)不一致的發(fā)生。,共享鎖:lock table emp in share mode; 排他鎖:lock table dept in exclusive mode; 行級共享鎖:lo
12、ck table salgrade in row share mode; 行級排他鎖:lock table emp in row exclusive mode; 共享行級排他鎖:lock table emp in share row exclusive mode;,11.5 鎖粒度,鎖粒度是指被鎖定的數(shù)據(jù)對象的大小稱為鎖粒度。鎖粒度與數(shù)據(jù)庫系統(tǒng)的并發(fā)度和并發(fā)控制的開銷密切相關(guān)。鎖粒度越大,數(shù)據(jù)庫中所能夠使用的資源也就越少,并發(fā)度也就越小,系統(tǒng)開銷也就越小;反之,鎖的粒度越小,并發(fā)度也就越大,但系統(tǒng)的開銷也就越大。 一般來講,數(shù)據(jù)庫中鎖的粒度可以分為4個級別:數(shù)據(jù)庫級、表級、行級和列級,11.5
13、.1 TX鎖(行級鎖、事務鎖),TX鎖定本義是Transaction鎖(行級鎖、事務鎖),當一個事務執(zhí)行更新數(shù)據(jù)操作時,它即獲得一個TX鎖,直至該事務結(jié)束時才釋放該鎖。一個TX鎖可以鎖定該事務涉及的多行數(shù)據(jù)。 TX鎖是Oracle支持鎖定的最低級別。在更新過程中,行級別鎖會阻止這一行上的任何其他DML操作發(fā)生。,11.5.2 TM鎖(表級鎖),Oracle的行級鎖雖然只有一種(TX),但是TM(表級鎖) 類型共有5種鎖模式: S鎖 X鎖 RS鎖 RX鎖 SRX鎖由于表是由行組成的,所以向某個表加鎖時,Oracle一方面需要檢查鎖與表上原有的表級鎖是否相容,另一方面還要檢查鎖是否與表中的每一行的鎖是否相容。,11.5.3 數(shù)據(jù)庫級鎖,數(shù)據(jù)庫級別的鎖將鎖定整個數(shù)據(jù)庫,以禁止任何新會話和新事務。 可以使用一下語句更改數(shù)據(jù)庫的限制性(數(shù)據(jù)庫級鎖)模式中:alter sy
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030農(nóng)產(chǎn)品加工產(chǎn)能提升供應國際化需求調(diào)整政策研究
- 2025-2030農(nóng)業(yè)科技領(lǐng)域現(xiàn)狀分析供需關(guān)系及投資方向規(guī)劃報告
- 2025-2030農(nóng)業(yè)生物技術(shù)行業(yè)市場供需考察與投資前景規(guī)劃分析研究報告
- 2025-2030農(nóng)業(yè)現(xiàn)代化行業(yè)市場運營分析及綠色投資發(fā)展評估報告
- 2025-2030農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)行業(yè)市場需求供給發(fā)展分析及投資方向規(guī)劃分析研究報告
- 2025-2030農(nóng)業(yè)機械化行業(yè)現(xiàn)狀供需分析及投資評估規(guī)劃研究報告
- 2025-2030農(nóng)業(yè)農(nóng)產(chǎn)品市場供需分析行業(yè)現(xiàn)狀評估投資規(guī)劃報告
- 2025-2030再保險行業(yè)市場運行分析及發(fā)展趨勢與管理策略研究報告
- 2025-2030全球航空服務行業(yè)市場競爭格局現(xiàn)狀分析投資入股價值評估合理規(guī)劃研究報告
- 高考政治一輪復習-第四單元-發(fā)展社會主義市場經(jīng)濟單元優(yōu)化總結(jié)講義-新人教版必修
- T/CCMA 0114-2021履帶式升降工作平臺
- DB32T 5124.1-2025 臨床護理技術(shù)規(guī)范 第1部分:成人危重癥患者目標溫度管理
- 食管癌的護理查房知識課件
- 高三日語二輪復習閱讀專題課件
- 《雙重差分法與調(diào)節(jié)效應模型:解析綠色債券價值影響》12000字(論文)
- 2025屆江蘇省南通市高三下學期3月二?;瘜W試題(含答案)
- 畢業(yè)論文答辯的技巧有哪些
- 粉色小清新小紅帽英語情景劇
- 酒店安全風險分級管控和隱患排查雙重預防
- 2018年風電行業(yè)事故錦集
- 《重點新材料首批次應用示范指導目錄(2024年版)》
評論
0/150
提交評論