數(shù)據(jù)庫(kù)應(yīng)用技術(shù):第6章 事務(wù)處理與并發(fā)控制_第1頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用技術(shù):第6章 事務(wù)處理與并發(fā)控制_第2頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用技術(shù):第6章 事務(wù)處理與并發(fā)控制_第3頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用技術(shù):第6章 事務(wù)處理與并發(fā)控制_第4頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用技術(shù):第6章 事務(wù)處理與并發(fā)控制_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)應(yīng)用技術(shù)第六章事務(wù)處理與并發(fā)控制內(nèi)容概要事務(wù)處理事務(wù)的基本特性事務(wù)處理語(yǔ)句并發(fā)控制數(shù)據(jù)庫(kù)實(shí)現(xiàn)機(jī)制簡(jiǎn)介事務(wù)處理事務(wù)(Transaction)是包括多個(gè)數(shù)據(jù)庫(kù)操作,構(gòu)成一個(gè)完整業(yè)務(wù)操作的邏輯工作單元。事務(wù)的執(zhí)行結(jié)果:全部成功 or 全部失敗。提交:通知數(shù)據(jù)庫(kù)當(dāng)前事務(wù)完全結(jié)束,數(shù)據(jù)庫(kù)將事務(wù)的影響永久化。并準(zhǔn)備開(kāi)始下一個(gè)事務(wù)。卷回:通知數(shù)據(jù)庫(kù)撤銷(xiāo)并結(jié)束當(dāng)前事務(wù),該事務(wù)之前所造成的影響完全回復(fù)。部分卷回:撤銷(xiāo)一部分操作,仍處于當(dāng)前事務(wù)。事務(wù)的ACID特性原子性(Atomicity):事務(wù)的一組操作是不可分的。要么完全成功,要么完全失敗,即使是在發(fā)生系統(tǒng)崩潰的情況下。一致性(Consistency)

2、:符合預(yù)先設(shè)定的商業(yè)規(guī)則(Business Rules)。隔離性(Isolation):兩個(gè)事務(wù)并行執(zhí)行的結(jié)果和(某種)串行執(zhí)行的結(jié)果是一樣的。也稱(chēng)可串行性(Serializability)。持久性(Durability):事務(wù)提交后,結(jié)果是持久存儲(chǔ)的,即使是在系統(tǒng)崩潰時(shí)。事務(wù)處理的一些相關(guān)概念事務(wù)、用戶(hù)與會(huì)話(huà)的關(guān)系一個(gè)用戶(hù)可以開(kāi)啟多個(gè)會(huì)話(huà)(session)一個(gè)事務(wù)只能限于一個(gè)會(huì)話(huà)中不同會(huì)話(huà)之間的事務(wù)可能存在并發(fā)沖突語(yǔ)句正確執(zhí)行與事務(wù)提交的區(qū)別語(yǔ)句級(jí)卷回與事務(wù)卷回事務(wù)的開(kāi)始和結(jié)束標(biāo)志事務(wù)開(kāi)始標(biāo)志從上一個(gè)事務(wù)完成(或初次連接數(shù)據(jù)庫(kù))后的第一個(gè)DML語(yǔ)句開(kāi)始。帶有FOR UPDATE的語(yǔ)句視為DM

3、L在MSS中有BEGIN TRANSACTION語(yǔ)句事務(wù)結(jié)束標(biāo)志顯式的提交或卷回語(yǔ)句執(zhí)行一個(gè)DDL語(yǔ)句(提交)用戶(hù)斷開(kāi)連接(提交);用戶(hù)進(jìn)程不正常結(jié)束(卷回)。事務(wù)處理語(yǔ)句COMMIT WORK;ROLLBACK WORK;SAVEPOINT 保存點(diǎn);ROLLBACK TO sp;數(shù)據(jù)庫(kù)狀態(tài)卷回到指定的sp,使這個(gè)sp之后保存的所有SAVEPOINT失效,釋放這個(gè)sp之后的所有鎖。不結(jié)束當(dāng)前事務(wù),該sp之前的修改和鎖仍然存在事務(wù)處理要注意程序執(zhí)行流程與數(shù)據(jù)庫(kù)狀態(tài)的區(qū)別。例子:事務(wù)處理語(yǔ)句內(nèi)容概要事務(wù)處理并發(fā)異常與并發(fā)控制并發(fā)異常并發(fā)隔離級(jí)別數(shù)據(jù)庫(kù)實(shí)現(xiàn)機(jī)制簡(jiǎn)介并發(fā)異常多個(gè)事務(wù)并發(fā)執(zhí)行時(shí),在沒(méi)有確

4、保事務(wù)的隔離性和一致性的情況下出現(xiàn)的錯(cuò)誤。即并發(fā)執(zhí)行結(jié)果與串行結(jié)果不一致。并發(fā)異常種類(lèi)臟寫(xiě)(Dirty Write)*臟讀(Dirty Read)不可重復(fù)讀(Non-repeatable Read)幻影讀(Phantom Read)并發(fā)異常舉例時(shí)刻事務(wù)1事務(wù)2數(shù)據(jù)庫(kù)值1X=R(A)1002X=X+403W(A,X)1404COMMIT1405X=R(A)1406X=X+507W(A,X)1908COMMIT190兩個(gè)事務(wù)串行執(zhí)行結(jié)果并發(fā)異常-臟寫(xiě)時(shí)刻事務(wù)1事務(wù)2數(shù)據(jù)庫(kù)值1X=R(A)=1001002X=R(A)=1003X=X+40X=X+504W(A,X)1405W(A,X)150?6COM

5、MIT7COMMIT并發(fā)異常-臟讀時(shí)刻事務(wù)1事務(wù)2數(shù)據(jù)庫(kù)值1X=R(A)=1001002X=X+403W(A,X)1404X=R(A)=1405ROLLBACK1006X=X+507W(A,X)190?8COMMIT190?并發(fā)異常-不可重復(fù)讀時(shí)刻事務(wù)1事務(wù)2數(shù)據(jù)庫(kù)值1X=R(A)=1001002X=R(A)=1003X=X+404X=X+505W(A,X)1406COMMIT1407W(A,X)150?8COMMIT150?并發(fā)異常-幻影讀時(shí)刻事務(wù)1事務(wù)2數(shù)據(jù)庫(kù)1SELECT SUM(DOLLARS)INTO x共10條記錄,SUM=10002INSERT INTO ORDERS VALUE

6、S(120)共11條記錄,SUM=11203COMMIT4建立游標(biāo),對(duì)表中每條記錄循環(huán)讀取5求和,以及其他操作并發(fā)異常與隔離級(jí)別上述異常能否出現(xiàn),不僅取決于不同會(huì)話(huà)的并發(fā)程度DBMS內(nèi)部通過(guò)各種實(shí)現(xiàn)機(jī)制,能夠在一定程度上保證不同的并發(fā)異常不能發(fā)生。不同級(jí)別的實(shí)現(xiàn)機(jī)制所付出的代價(jià)不同,帶來(lái)的效果也不同,這被稱(chēng)為隔離級(jí)別(Isolation Level)一個(gè)基本的DBMS至少要保證臟寫(xiě)不能出現(xiàn)并發(fā)隔離級(jí)別Isolation LevelDirty ReadNon-RepeatableReadPhantom ReadRead uncommittedPossiblePossiblePossibleRea

7、d committedNotPossiblePossibleRepeatable readNotNotPossibleSerializableNotNotNotOracle只支持Read committed和Serializable兩種級(jí)別缺省是Read committed級(jí)別性能和正確性的平衡正確性Isolation Level性能低高Read uncommittedRead committedRepeatable readSerializable高低并發(fā)控制級(jí)別設(shè)置應(yīng)用系統(tǒng)的并發(fā)程度系統(tǒng)吞吐量在相同的時(shí)刻,對(duì)相關(guān)數(shù)據(jù)進(jìn)行修改的概率應(yīng)用系統(tǒng)對(duì)并發(fā)錯(cuò)誤的容忍程度如銀行等系統(tǒng)就不容忍金錢(qián)錯(cuò)誤網(wǎng)上

8、論壇,可以允許一定的錯(cuò)誤發(fā)生并發(fā)控制級(jí)別設(shè)置程序員可以采用一些方法來(lái)對(duì)關(guān)鍵程序段設(shè)置更高的隔離級(jí)別設(shè)置隔離級(jí)別alter session set isolation_level=serializable;手工加鎖FOR UPDATE,避免不可重復(fù)讀LOCK TABLE內(nèi)容概要事務(wù)處理并發(fā)控制數(shù)據(jù)庫(kù)實(shí)現(xiàn)機(jī)制簡(jiǎn)介回滾的實(shí)現(xiàn)持久性并發(fā)控制和鎖卷回與持久性回滾的實(shí)現(xiàn)機(jī)制:Undo Tablespace持久性與效率數(shù)據(jù)庫(kù)緩存Redo Log File備份與恢復(fù)并發(fā)控制實(shí)現(xiàn)機(jī)制鎖:是防止事務(wù)之間對(duì)相同資源的存取而發(fā)生沖突的機(jī)制。鎖的生存期:直到事務(wù)提交和卷回為止。死鎖和檢測(cè):ORACLE自動(dòng)檢測(cè)死鎖,并卷

9、回一個(gè)事務(wù)中的語(yǔ)句。死鎖避免:對(duì)一系列資源使用相同的申請(qǐng)次序,或首先申請(qǐng)更高級(jí)別(范圍)的鎖。鎖的分類(lèi)按功能分寫(xiě)鎖、讀鎖、謂詞鎖獨(dú)占(exclusive)鎖:其他事務(wù)不能存取資源。共享(share)鎖:其他事務(wù)可以讀取,但不能修改按范圍分行鎖、頁(yè)面鎖、表鎖手工加鎖事務(wù)級(jí)手工加鎖SET TRANSACTION ISOLATION LEVELLOCK TABLELOCK TABLE IN ROW SHARE | ROW EXCLUSIVE | SHARE | SHART ROW EXCLUSIVE | EXCLUSIVE MODE NOWAIT;SELECT FROM table FOR UPDA

10、TEDECLAREs1 NUMBER;s2 NUMBER;BEGINLOCK TABLE detail IN EXCLUSIVE MODE;LOCK TABLE master IN SHARE ROW EXCLUSIVE MODE;SELECT SUM(balance) INTO s1 FROM detail WHERE id = 001;SELECT amount INTO s2 FROM master WHERE id = 001;IF s1 s2 THEN Raise_Application_Error(-20001, not matched);END IF;END;手工加鎖舉例BEGINLOCK TABLE detail IN EXCLUSIVE MODE;LO

溫馨提示

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

評(píng)論

0/150

提交評(píng)論