併發控制
一、基本概念
1、在多使用者共享系統中,許多事務可能同時對同一資料進行操作,稱為併發操作,此時資料庫管理系統的併發控制子系統負責協調併發事務的執行,保證資料庫的完整性不受破壞,同事避免使用者得到不正確的資料。
2、事務:將多個操作封裝起來,形成一個事務。
3、事務具有原子性(事務裡的操作全做,要麼全不做),一致性(事務執行之前之後,資料是一致的,類似能力守恆),隔離性(事務之間獨立執行,互不干擾),持續性(事務執行後的影響是一直持續下去的)。
二、存在的問題
1、併發操作帶來的主要問題有
l
丟失更新(丟失更改):
兩個事務T1和T2讀入同一資料並修改,T2提交的結果破壞了T1提交的結果,T1的修改丟失。
l
讀過時的資料(不可重複讀):
事務T1讀取某一資料,事務T2讀取並修改了同一資料,T1為了讀取值進行校對再讀此資料,得到了不同的結果。
l
髒讀資料:
事務T1修改某一資料,事務T2讀取同一 資料,而T1由於某種原因被撤銷,則T2讀到的資料就為“髒”資料,即為不正確的資料。
2、封鎖的型別
l
排他型封鎖(X封鎖):
如果事務T對資料A實現了X封鎖,那麼只允許事務T讀取和修改資料A,其他事務要等事務T解除X封鎖以後,才能對資料A實現任何型別的封鎖。X封鎖只允許一個事務獨鎖和使用某個資料。
l
共享型封鎖(S封鎖):
如果事務T對資料A實現了S封鎖,那麼允許事務T讀取資料A,但不能修改資料A,在所有S封鎖解除之前,決不允許任何事務對資料A實現X封鎖。
3、封鎖協議
一級封鎖協議:
事務T在修改資料R之前必須先對其加X鎖,直到事務結束才釋放。可防止丟失更新,並保證事務T是可恢復的。但不能保證可重複讀和不讀髒資料
二級封鎖協議:
一級封鎖協議加上事務T在讀取資料R之前先對其加S鎖,讀完後即釋放S鎖。可防止丟失更新,讀髒資料。但不能保證可重複讀
三級封鎖協議:
一級封鎖協議加上事務T在讀取資料R之前先對其加S鎖,直到事務結束才釋放。可防止丟失更新,讀髒資料,可資料重複讀
l
兩段封鎖協議:
每個事務的執行可以分為兩個階段:生長階段(加鎖階段)和衰退階段(解鎖階段)
加鎖階段:在該階段可以進行加鎖操作。在對任何資料進行讀操作之前要申請並獲得S鎖,在進行寫操作之前要申請並獲得X鎖。加鎖不成功,則事務進入等待狀態,直到加鎖成功才繼續執行。
解鎖階段:當事務釋放了一個封鎖以後,事務進入解鎖階段,在該階段只能進行解鎖操作不能再進行加鎖操作。
具有可序列化的(防止丟失更新,讀髒資料,可資料重複讀),可能發生死鎖。
4、死鎖
死鎖指的是多個使用者申請不同封鎖,由於申請者均擁有一部分的封鎖權而又需要等待另外的使用者擁有的部分封鎖而引起的永無休止的等待。
避免的方法:
1)預防法:採用一定的操作方式以避免死鎖的出現。順序申請法、一次申請法等即是此類方法。順序申請法是指對封鎖物件按序編號,使用者申請封鎖時,必須按編號順序申請。一次申請法是指使用者在一個完整操作過程中必須一次性申請它所需要的所有封鎖。
2)死鎖的解除:程式檢測是否死鎖,再用另一個程式解開死鎖。
資料庫的完整性約束
資料庫的完整性是指資料的正確性和相容性。
一、實體完整性約束
約束的主鍵的值不能為空。
二、參照完整性約束
主要針對外來鍵
級聯刪除
受限刪除
置空刪除
三、使用者自定義的完整性約束
完整性約束提高資料的可靠性。
四、觸發器
當系統檢查出資料有違反完整性約束條件時,則僅給出必要的提示以通知使用者,僅此而已。它還會引起系統內自動進行某些操作以消除違反完整性約束條件所引起的負面影響
觸發器除了有完整性保護功能外,還有安全性保護功能
資料庫安全
資料備份與恢復技術
一、資料庫故障
1、事務內部的故障
:事務內部的故障有的是可以透過事務程式本身發現的,有點是非預期的,不能事務程式處理。
2、系統範圍的故障:
造成系統停止運轉的任何事件,使得系統要重新啟動。
3、介質故障:
系統故障稱之為軟故障,介質故障稱之為硬故障。硬故障是指外存故障,如磁碟的磁頭碰撞、瞬時的強磁場干擾等。
4、計算機病毒。
二、資料備份
u 靜態備份(冷備份):備份期間
不
允許對資料庫進行任何存取、修改活動。
u 動態備份(熱備份):備份期間允許對資料庫進行任何存取、修改活動。
n 完全備份:備份所有資料
n 差量備份:僅備份上一次
完全之後
變化的資料
n 增量備份:備份上一次
備份之後
變化的資料
l 靜態海量轉儲:在系統中無執行事務時進行,每次轉儲全部資料庫。
l 靜態增量轉儲:在系統中無執行事務時進行,每次轉儲上一次轉儲後更新過的資料庫。
l 動態海量轉儲:轉儲期間允許對資料庫進行儲存或修改,每次轉儲全部資料庫。
l 動態增量轉儲:轉儲期間允許對資料庫進行儲存或修改,每次轉儲上一次轉儲後更新過的資料庫。
日誌檔案:事務日誌是針對資料庫改變所做的記錄,並將記錄結果儲存在獨立的檔案中。
三、資料恢復