使用者標識和鑑定(系統提供的最外層安全保護措施)
訪問控制(對登入成功的使用者也要控制其對資料的訪問)
定義檢視(檢視的優點,可以遮蔽一些使用者不該看到的資料)
審計(系統自動將使用者對資料庫的所有操作記錄在上面,利用審計追蹤資訊能重現導致資料出現現有狀況的一系列事件,找出非法訪問資料的人)
資料加密(使用加密技術,密文傳輸和密文儲存)
指資料的正確性、一致性、相容性
如學生的年齡必須是整數、取值範圍是10~30,學生的性別是「男」和「女」,學生的學號必須是唯一的等
3方面的功能:定義功能、檢查功能、採取措施的功能(立即執行和延遲執行約束)
併發控制帶來的不一致性包括3類:
丟失修改資料 lost update
不可重複讀 nonrepeatable read
讀"髒"資料 dirty read
保證事務acid特性
原子性 atomicity
一致性 consistency
隔離性 isolation
永續性 durability
基本的封鎖型別2種:
排它鎖 exclusive locks(簡稱x鎖)
共享鎖 share locks(簡稱s鎖)
封鎖協議:
一級封鎖協議
二級封鎖協議
**封鎖協議
如果事務t1封鎖了資料r,事務t2又請求封鎖r,於是t2等待。t3也請求封鎖r,當t1釋放了r上的封鎖之後系統首先批准了t3的請求,t2仍然等待。然後t4又請求封鎖r,當t3釋放了r上的封鎖之後系統又首先批准了t4的請求…t2有可能永遠等待,這就是活鎖情形
解決活鎖的簡單方法:
採用先來先服務策略,當多個事務請求封鎖同一資料物件時,封鎖子系統按請求封鎖的先後次序為事務排隊,資料物件上的鎖一旦釋放就批准申請佇列中的第乙個事務獲得鎖
如果事務t1封鎖了資料r1,t2封鎖資料r2,然後t1又請求封鎖r2,因為t2已經封鎖了r2,於是t1等待t2釋放r2上的鎖。接著t2又請求封鎖r1,因為t1已經封鎖了r1,於是t2等待t1釋放r1上的鎖。這樣就出現了t1在等待t2,而t2又在等待t1的局面,t1和t2這兩個事務永遠不能結束,形成死鎖。
死鎖的解決方法2類:
採取一定措施預防死鎖的產生
允許發生死鎖,但採用一定手段定期診斷系統中有無死鎖,若有則解除它(dbms普遍採用此類方法)
死鎖的預防方法
一次封鎖法(要求每個事務必須一次將所有要使用的資料加鎖,否則就不能繼續執行)
順序封鎖法(預先對資料物件規定乙個封鎖順序,所有事務都按這個順序實行封鎖)
死鎖的診斷與解除法:
超時法(如果乙個事務等待時間超過了規定的時限,就認為發生了死鎖)
等待圖法(事務等待圖是乙個有向圖g=(t, u),併發控制子系統週期性檢查事務等待圖(如每隔一分鐘),如果發現圖中存在迴路,則表示系統**現了死鎖)
可序列性是判斷併發事務正確性的標準。按這個標準,乙個給定的併發排程,當且僅當它是可序列化的,才被認為是正確的排程
定義:多個事務的併發執行時正確的,當且僅當其結果與按某一次序序列地執行它們的結果相同,這個排程策略稱為可序列化的排程 serializable
目前dbms普遍採用實現併發操作排程的方式是:封鎖方法
兩段鎖協議(重點,常用4)
時標方法
樂觀方法
是指所有事務必須分兩個階段對資料項加鎖和解鎖
事務可以申請獲得任何資料項上的任何型別的鎖,但是不能釋放任何鎖(獲得封鎖)
事務可以釋放任何資料項上的任何型別的鎖,但是不能再申請任何鎖(釋放封鎖)
指封鎖物件的大小
封鎖邏輯單元:屬性值、屬性值的集合、元組、關係、索引塊、整個索引甚至整個資料庫
封鎖物理單元:頁(資料頁、索引頁)、塊
封鎖的粒度越大,資料庫所能封鎖的資料單元就越少,併發度越小,系統開銷也越小
封鎖的粒度越小,併發度越高,但系統開銷也就越大
乙個系統中同時支援多種封鎖粒度,以供不同的事務選擇
選擇封鎖粒度應該同時考慮封鎖粒度和併發度兩個因素,適當選擇封鎖粒度以獲得最優效果
一般來說:
需要處理大量元組的事務可以以關係為封鎖粒度
需要處理多個關係的大量元組的事務可以以資料為封鎖粒度
需要處理少量元組的使用者事務以元祖為封鎖粒度就比較合適了
多粒度樹
多粒度封鎖中乙個資料物件可能以兩種方式封鎖:
顯式封鎖(應事務要求直接加到資料物件上的封鎖)
隱式封鎖(由於上級結點封鎖而使該資料物件加上了鎖)
注意:多粒度封鎖中,顯式封鎖和隱式封鎖的效果是一樣的
因為加顯示封鎖,要檢查麻煩的原因
含義:如果對乙個結點加意向鎖,說明該結點的下層結點正在被加鎖(已被加鎖); 對任一結點加鎖時,必須先對它的上層結點加意向鎖
優點:系統只要價差根結點資料庫和關係r1是否已加了不相容的鎖,而不再需要搜尋和檢查r1中每乙個元祖是否加了x鎖
3種常見意向鎖:
意向共享鎖 intent share lock, is鎖
意向排它鎖 intent exclusive lock, ix鎖
共享意向排它鎖 share intent exclusive lock,six鎖(先加s鎖,再加ix鎖。即加six鎖,則表示該事務要讀整個表,同時會更新個表元組)
鎖的相容性:
s、x、is、ix、six
具有意向鎖的多粒度封鎖方法中,必須先對它的上層結點加意向鎖,申請封鎖時應該按自上而下的次序進行,釋放封鎖時則應該按自下而上的次序進行
意義:具有意向鎖的多粒讀封鎖方法提高了系統的併發度,減少了加鎖和解鎖的開銷,它已經在實際的dbms產品中的得到廣泛應用,如新版oracle
如果資料庫中的資料只包含成功事務提交的結果,那麼資料庫就處於一致的狀態
故障主要有3類:
事務故障(強行回滾rollback)
系統故障(先強行回滾,後重做所有已提交的事務 redo)
介質故障(某個時刻的資料庫副本,並重做自此時開始的所有成功事務)
資料轉儲(某個時刻的資料庫副本,並重做自此時開始的所有成功事務)
登入日誌檔案(原則①嚴格按並行事務執行的時間次序登入 ②必須先寫日誌檔案,後寫資料庫檔案)
事務事故的恢復:
反向掃瞄檔案日誌
對該事務的更新操作執行逆操作
繼續反向掃瞄日誌檔案
知道讀到此事務的開始標記
系統故障的恢復:
正向掃瞄檔案日誌
對撤銷佇列中的各個事務進行撤銷處理
對重做佇列中的各個事務進行重做
介質故障的恢復:
裝入最新的後備資料庫副本
裝入有關的日誌檔案副本,重做已完成的事務
注意:介質故障的恢復必須由dba參與
備份的型別
雙機熱備份(從伺服器的資料和主伺服器的資料每時每刻都是同步的)
雙工備份(一台機雙路磁碟通道)
磁碟映象(乙個磁碟控制器之下有2個硬碟)
資料庫備份技術(以上都是由作業系統提供,資料庫備份指備份到離線的儲存介質上) 日誌
備份或轉儲
備份的型別
全備份增量備份
表備份
恢復 load
映象(實質也是備份)
安全性(賬戶、許可權)
完整性
完整性:實體完整性、域完整性、參照完整性、使用者定義的完整性
約束:主關鍵字約束primary key constratint、外關鍵字約束、唯一性約束、檢查約束、預設約束default constraint(定義列的預設值)
規則(值的規定和限制 rule)
預設值(自動填充的資料 default)
併發控制
事務(原子性、一致性、隔離性、永久性)(一組資料操作命令的指令序列)
事務回滾 rollback
鎖(多使用者環境下的對資源訪問的一種限制機制)
從資料庫系統角度分類
獨佔鎖共享鎖(可被讀取,但其他使用者不能修改它)
更新鎖
從程式設計師角度分類
樂觀鎖(完全依靠資料來管理鎖)
悲觀鎖(程式設計師手動獲取、加鎖、共享、放棄鎖)
資料庫保護
關係型資料庫的事務 a atomicity 原子性 事務的原子性是資料庫的邏輯工作單位,事務中的操作要麼都做,要麼都不做。c consistency 一致性 事務執行的結果必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。i isolation 隔離性 乙個事務的執行不能被其他事務干擾 d dur...
保護資料庫
定義 分類 實體完整性 域完整性 使用者定義完整性 建立約束 主鍵 外來鍵 1 建立表的同時建立約束 1 主鍵primary key 2 外來鍵foreign key 父關鍵字在自己表中必須是主鍵 父子必須完全一樣 3 唯一unique 4 預設值default 舉例create table stu...
資料庫之保護資料庫
一 完整性定義 分類 實體完整性 域完整性 使用者定義完整性 建立約束 主鍵 外來鍵 1 建立表的同時建立約束 1 主鍵primary key 2 外來鍵foreign key 父關鍵字在自己表中必須是主鍵 父子必須完全一樣 3 唯一unique 4 預設值default舉例create table...