资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
資料庫系統理論與實務-使用Oracle,1,第九章 異動處理與並行性問題,資料庫系統理論與實務-使用Oracle,2,9-1 資料並行性與資料一致性,資料並行性(Data Concurrency) 資料一致性(Data Consistency),資料庫系統理論與實務-使用Oracle,3,9-1-1 異動交易的四大特性,單元性(Atomicity) 一致性(Consistency) 隔離性(Isolation) 持續性(Durability),資料庫系統理論與實務-使用Oracle,4,單元性(Atomicity),一個異動交易(Transaction) 中包含了數個以上資料庫動作(Actions)。 整個異動交易必須視為一個不可分割的單元。也就是說整個異動交易的所有動作必須全部做完,若異動交易的中間過程有任何錯誤產生時,必須撤回(Rollback) 到未執行異動交易前的原點,也就是整個異動都不做。,資料庫系統理論與實務-使用Oracle,5,一致性(Consistency),異動交易(Transaction) 在處理過程前後,必須使資料庫處理保持一致的狀態,雖然異動交易的過程中未必保持一致性。,資料庫系統理論與實務-使用Oracle,6,隔離性(Isolation),異動交易(Transaction) 執行的過程中,所用到的資料或所產生的中間結果,都不能透露給其它異動交易讀取或更改,稱之為異動交易的隔離性。,資料庫系統理論與實務-使用Oracle,7,持續性(Durability),如果異動交易執行過程都完全正常,且異動交易被委付確認(Commit) 後,無論事後系統發生錯誤,則當系統排除錯誤,恢復正常時,原異動交易被委付確認的資料仍必須存在。,資料庫系統理論與實務-使用Oracle,8,9-2 常見的並行控制問題,遺失更新問題(Lost Update Problem) 未委付確認相依問題(Uncommitted Dependency Problem) 不一致分析問題 (Inconsistent Analysis Problem),資料庫系統理論與實務-使用Oracle,9,遺失更新問題(Lost Update Problem),資料庫系統理論與實務-使用Oracle,10,未委付確認相依問題(Uncommitted Dependency Problem),資料庫系統理論與實務-使用Oracle,11,不一致分析問題 (Inconsistent Analysis Problem),資料庫系統理論與實務-使用Oracle,12,9-3 排程(Schedule) 的概念,序列化排程(Serial Schedule):所謂序列化排程(Serial Schedule) 是指一個異動交易(Transaction) 緊接著另一個異動交易循序地執行,而且不相互交叉執行。,資料庫系統理論與實務-使用Oracle,13,序列化排程對於資料庫一致性的意義,一個一致性的資料庫經過任何序列化排程運作後,該資料庫還是合乎一致性的。,資料庫系統理論與實務-使用Oracle,14,非序列化排程(Non-serial Schedule),指多個異動交易(Transaction) 同時交錯地執行,然而個別異動交易內各動作(Action),仍遵守它在該異動交易內的先後順序。,資料庫系統理論與實務-使用Oracle,15,可序列化排程(Serializable Schedule),若一非序列化排程(Non-serial Schedule),其執行結果與任一個序列化(Serial Schedule)的執行結果相同,則該非序列化排程稱為“可序列化排程”(Serializable Schedule)。,資料庫系統理論與實務-使用Oracle,16,可序列化排程的例子,資料庫系統理論與實務-使用Oracle,17,9-4 鎖定(Locks),在多使用者的資料庫(Multi-user Database) 中,一般都採取某些資料鎖定(Locks) 來解決並行處理(Concurrency) 中資料的一致性(Consistency) 與整合性(Integrity) 問題。,資料庫系統理論與實務-使用Oracle,18,主要的兩種鎖定(Lock),互斥鎖定(Exclusive Lock) 共享鎖定(Share Lock),資料庫系統理論與實務-使用Oracle,19,互斥鎖定(Exclusive Lock),它禁止相關資源共享。如果一異動交易(Transaction) 以互斥鎖定方式封鎖某資源,則僅有該異動交易(Transaction) 被允許更新該資源的資料,直到該異動交易釋放對該資源的鎖定。,資料庫系統理論與實務-使用Oracle,20,共享鎖定(Share Lock),它允許相關資源可以被共享(Share),例如:多個使用者可以讀取(Read) 相同的資料。多個異動交易(Transaction) 可以對同一資源獲得共享鎖定。,資料庫系統理論與實務-使用Oracle,21,死結的例子,資料庫系統理論與實務-使用Oracle,22,兩種不同層次一致性,敘述層級讀取一致性(Statement-level Read Consistency) 異動交易層級讀取一致性(Transaction-level Read Consistency),資料庫系統理論與實務-使用Oracle,23,9-4-1 敘述層級讀取一致性,ORACLE 系統通常實施敘述層級讀取一致性,以保證個別查詢所傳回的資料與該查詢開始時一致。因此一個查詢從不會看到查詢過程中其他異動交易所做的委付確認(Commit) 的任何更新資料。 example,資料庫系統理論與實務-使用Oracle,24,異動交易層級讀取一致性,ORACLE 允許選擇實施異動交易層級讀取一致性,它保證在同一個時間點,同一個異動交易內的所有查詢資料是一致的。因此異動交易層級讀取一致性可以允許重覆性的讀取,仍保證資料的一致性。,資料庫系統理論與實務-使用Oracle,25,兩種保證異動交易層次讀取一致性的方法,唯讀異動交易(Read only Transaction) 互斥表鎖定與列鎖定(Exclusive Table and Row Lock),資料庫系統理論與實務-使用Oracle,26,9-5 ORACLE 的鎖定機制,ORACLE 會自動地使用不同的鎖定來控制資料的並行存取(Concurrency Access) 以防止使用者間的破壞性干擾。ORACLE 系統會自動地鎖定某一資源以防止其他異動交易對同一資源的互斥鎖定(Exclusive Lock)。當某些特定事件(event) 發生或異動交易不再需要該資源時,異動交易會自動地解除該鎖定。,資料庫系統理論與實務-使用Oracle,27,ORACLE 鎖定種類,資料鎖定(Data Lock) 資料字典鎖定(Dictionary Lock) 內部鎖定(Internal Lock) 分散式鎖定(Distributed Lock) 平行緩衝管理鎖定(Parallel Cache Management Lock),資料庫系統理論與實務-使用Oracle,28,資料鎖定(Data Lock),資料鎖定保護資料。其中包括了表格鎖定與列鎖定。 表格鎖定鎖住整個表格,列鎖定鎖定了所選定的列。 資料鎖定亦稱為 DML 鎖定(DML Lock),資料庫系統理論與實務-使用Oracle,29,資料字典鎖定(Dictionary Lock),資料字典鎖定保護資料庫物件的結構,例如表格(Table) 與視觀表格(View) 等的定義。 資料字典鎖定亦稱為 DDL 鎖定(DDL Lock)。,資料庫系統理論與實務-使用Oracle,30,內部鎖定(Internal Lock),內部鎖定保護內部資料庫結構,例如:檔案。 這類鎖定是完全自動地設定。,資料庫系統理論與實務-使用Oracle,31,分散式鎖定(Distributed Lock),分散式鎖定確保資料或資源在多個不同版本的 ORACLE 平行伺服器中保持資料一致性。,資料庫系統理論與實務-使用Oracle,32,平行緩衝管理鎖定(Parallel Cache Management Lock),平行緩衝管理鎖定是種分散式鎖定,它涵蓋了緩衝區(Buffer) 中一個或多個資料區塊(Data Block)。 亦稱 PCM Lock。,資料庫系統理論與實務-使用Oracle,33,資料鎖定(Data Lock),資料鎖定保護表格資料,並確保多個使用者平行存取資料時的資料整合性(Data Integrity)。 資料鎖定防止相衝突的 DML 和 DDL 操作造成的破壞性干擾。 DML 操作能獲得兩種等級的鎖定:特定列鎖定(Row Locks) 與整個表鎖定(Table Locks)。,資料庫系統理論與實務-使用Oracle,34,列鎖定(Row Locks),當某特定列被以下的指令所更新時要實施列鎖定(Row Locks) 。 列鎖定總是互斥鎖定(Exclusive Lock)。 例如:INSERT、 UPDATE、DELETE,資料庫系統理論與實務-使用Oracle,35,9-5-3 表鎖定(Table Locks),列共享表鎖定(Row Share Table Lock,RS) 列互斥表鎖定(Row Exclusive Table Lock,RX) 共享表鎖定(Share Table Lock,S) 共享列互斥表鎖定(Share Row Exclusive Table Lock,SRX) 互斥表鎖定(Exclusive Table Lock,X),資料庫系統理論與實務-使用Oracle,36,列共享表鎖定(Row Share Table Lock, RS),當一異動交易(Transaction) 欲企圖更新某特定列時,可設定此種鎖定,以防止其他異動交易更新那些特定列。 SELECT FROM 表格名 FOR UPDATE OF ; LOCK TABLE 表格名 IN ROW SHARE MODE;,資料庫系統理論與實務-使用Oracle,37,列互斥表鎖定(Row Exclusive Table Lock, RX),此種表鎖定表示該異動交易(Transaction) 對某些特定列做過一次或多次更新的動作。 INSERT INTO 表格名 ; UPDATE 表格名 ; DELETE FROM 表格名 ; LOCK TABLE 表格名 IN ROW EXCLUSIVE MODE;,資料庫系統理論與實務-使用Oracle,38,共享表鎖定(Share Table Lock, S),當執行下列的指令時,會自動設定該表格為共享表鎖定(S): LOCK TABLE IN SHARE MODE;,資料庫系統理論與實務-使用Oracle,39,共享列互斥表鎖定(Share Row Exclusive Table Lock, SRX),它比共享表鎖定(S) 具有更多限制,當異動交易(Transaction) 執行以下的指令時會自動地設定該表格為共享列互斥表格鎖定(SRX): LOCK TABLE 表格名 IN SHARE ROW EXCLUSIVE MODE;,資料庫系統理論與實務-使用Oracle,40,互斥表格鎖定(Exclusive Table Lock, X),此種為限制最嚴格的表鎖定,它允許獲得此鎖定的異動交易對該表格做存取。當異動交易執行以下的指令時會自動地獲得互斥表鎖定(X): LOCK TABLE 表格名 IN EXCLUSIVE MODE;,資料庫系統理論與實務-使用Oracle,41,表鎖定總結,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号