資料庫概論系統—系統篇
一、關系查詢處理和查詢優化
1.1關系資料庫的查詢處理
查詢處理可分為四個階段:查詢分析、檢查檢查、查詢優選和查詢執行(其中查詢優化可分為代數和物理優化)
1.2關系資料庫系統的查詢優化
查詢優化的優點不僅在于用戶不必考慮如何最好地表達查詢以獲得較高的效率,而且在于系統可以比用戶程式“優化”做的更好
會將建立原始樹,并能夠將其轉化為優化查詢樹
二、資料庫恢復技術
2.1事務
2.1.1事務的基本概念
事務:是用戶定義的一個資料庫操作序列,要不全做,要不全不做,是一個不可分割的作業單位(是資料庫恢復和并發控制的基本單位)
- 一般來書,一個程式中包含多個事務(事務,程式兩個概念)
COMMIT:提交,即提交事務的所有操作
ROLLBACK:回滾,即撤銷該事務完成的操作,回滾到事務開始狀態
2.1.2事務的ACID準則
原子性,一致性(正確性),隔離性和持續性
2.2故障的種類(處理非預期的)
- 事務內部的故障:此處專指非預期的故障
- 系統故障:是指造成系統停止運行的任何事件,使得系統要重新啟動,不破壞資料數,故障時,正在進行的事務會撤銷,已完成的在快取區的事務要重做
- 介質故障:又叫做硬故障,破壞最大
- 計算機病毒
2.3恢復的實作技術
資料庫恢復的原理十分簡單:建立冗余—資料轉儲和建立日志檔案
2.3.1資料轉儲
- 靜態轉儲:系統停止事務進行轉儲,期間不能操作資料庫
- 動態轉儲:轉儲和事務并發操作,但是資料會過時,一般的情況一個完整的副本 = 轉儲 + 日志檔案
- 還有海量和增量轉儲
2.3.2日志檔案
-
登記的次序嚴格按照并發事務執行的時間次序
-
先寫日志檔案,再寫資料庫
2.4恢復策略
-
事務故障恢復:利用日志檔案撤銷,反向掃描,進行逆操作,知道讀到事務的開始標記
-
系統故障恢復:先站佇列,正向掃描日志,有開始和提交->重做;只有開始->撤銷;有開始和回滾->什么也不去,再對撤銷佇列中的事務進行撤銷操作(見上)
-
介質故障恢復:重裝資料庫然后重做已完成的事務(管理員接入)
2.5具有檢查點的恢復技術
再日志檔案中加入新記錄—檢查點記錄,增加一個重新開始檔案,讓恢復子系統在登錄日志檔案期間動態維護日志,
- 建立檢查點時刻所有正在執行的事務清單
- 這些事務最近一個日志記錄的地址(正在進行中開始最早的)
2.6資料庫鏡像
處理介質故障,是提高資料庫可用性的解決方案,提高并發性的辦法
正常運行時,主盤自動復制到副盤;發生故障后副盤晉升為主盤并自動復制到新的副盤上,
三、并發控制
事務是并發控制的基本單位
3.1并發的概述
并發控制的目的是為了保證事務的隔離性和一致性
并發操作有可能會帶來丟失修改,不可重復讀,讀"臟資料"的問題
針對上述的問題采取了各種方法
3.2封鎖
事務T對某個資料物件操作前,像系統發出申請,對其加鎖,加鎖后事務會對資料有一定的控制
- 排他鎖、寫鎖、X鎖:只允許讀取和修改,其他事務不能對其加任何鎖,直到釋放
- 共享鎖、讀鎖、S鎖:可以讀但不能修改,其他事務可以對其加S鎖
3.3封鎖協議
- 一級封鎖:事務T修改前+X鎖,直到事務結束才釋放
- 二級封鎖:在一級的基礎上,事務T讀前+S鎖,讀完釋放
- 三級封鎖:在一級的基礎上,事務T讀前+S鎖,直到事務結束才釋放
不同級別的封鎖可解決不同的問題
3.4活鎖和死鎖
3.4.1活鎖
事務有了優先級,會插隊 =>先來先服務
3.4.2死鎖
事務之間形成倍訓
- 死鎖的預防
一次封鎖法:一次將所有使用資料全部枷鎖
順序封鎖法:預先對資料物件排序
- 死鎖的診斷與解除
超時法:規定等待時間,若超過等待時間,則認為是死鎖
等待圖法:選擇代價最小的一個事務撤銷
3.5并發調度的可串行性(了解)
3.5.1可串行化調度
多個事務并發是正確的<=>其結果與某一次串行執行的結果相同,即為可串行化調度
3.5.2沖突可串行化調度
沖突可串行化調度是可串行化的充分條件
只有對同一個資料的讀寫和寫寫會產生
- 已知調度,判斷是否沖突
1.畫有向圖(T,E) T:為事務個數;E:若Ri/Wi/Wi(x)在Wi/Ri/Wi(X)前則TIi—Tj
2.若有回路,則不是沖突可串行化調度;反之是
3.若為沖突可串行化調度,找一個入度為0的事務將其以及和其相連的邊刪去,再找一個入度為0的事務...重復
4.最后按照原調度順逆順序對每個事務內部進行排序
3.6兩段鎖協議
事務分成兩個階段對資料項進行加鎖和解鎖
- 獲得封鎖(擴展階段):事務申請獲得任何資料項上任何型別的鎖
- 釋放封鎖(收縮階段):事務釋放任何資料項上任何型別的鎖
注:遵循兩段鎖是可串行的充分條件,遵循兩段鎖也可能出現死鎖
3.7封鎖的粒度
封鎖粒度,即封鎖物件的大小(邏輯單元,資料庫,元組...)
- 封鎖粒度越大,資料庫能封鎖的資料單元越少,并發度就越小,開銷小
- 封鎖粒度越小,資料庫能封鎖的資料單元越多,并發度就越高,開銷大
3.7.1多粒度封鎖
多粒度封鎖允許每個結點被獨立地i加鎖,多粒度封鎖中的鎖有向下繼承關系
檢查一個資料是否可以加鎖:先檢查自己,再看上下級的資料結點
3.7.2意向鎖
如果對一個結點加意向鎖,則說明該鎖下層正在被加鎖;對任一結點加鎖,其上層結點都要加意向鎖,可以提高檢查效率
三種意向鎖
- 意向共享鎖(IS鎖):若對結點+S鎖,則上層結點+IS鎖
- 意向排他鎖(IX鎖):若對結點+X鎖,則上層結點+IX鎖
- 意向共享排他鎖(SIX鎖):若對結點+SIX鎖,則它對同一個下結點+S和X鎖(對同一個資料又讀又修改,不排他)![1685974462931]
注意:是否排他是對不同的事務來說
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/556863.html
標籤:其他
下一篇:返回列表