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