一、引言
數據庫管理系統DBMS的事務處理技術實現的一個主要功能部分就是恢復機制,恢復機制完成的功能就是對發生故障后系統中事務的更新結果進行數據恢復,保證事務的原子性和持久性,從而進一步保證數據庫的一致性。
數據庫系統與其他計算機系統一樣易發生故障,可能發生的故障大致可歸為事務故障、系統故障和介質故障三類。數據恢復就是針對不同故障導致數據庫出現的不一致錯誤進行的
二、事務故障
事務故障就是在事務執行過程中發生錯誤,導致事務夭折,不能執行完成。發生的錯誤主要有兩種
- 一種是事務內部操作受限,如不滿足完整性約束限制,訪問不到數據、運算溢出等,導致事務無法繼續正常執行。比如對于銀行轉賬事務,因賬戶余額不足讓事務回滾
- 另一種錯誤是系統進入了一種不良的狀態,如發生死鎖等,導致事務無法繼續正常執行
三、系統故障
1、系統故障是指造成系統停止運轉的任何事件,例如CPU等特定類型的硬件故障、操作系統故障、突然斷電等。發生系統故障后,系統崩潰,需要重啟?
2、由于主存是易失性存儲器,會造成主存內容,尤其是數據庫緩沖區中的內容丟失,導致所有事務都將非正常終止
但系統故障不會影響到磁盤上的數據庫,系統故障常稱為軟故障
三、介質故障
介質故障被稱為硬故障,介質故障主要是指使數據庫存儲介質發生破壞的故障
- 一般是磁盤故障,如磁盤損壞、磁頭碰撞、即時強磁場干擾等
- 或者是自然災害或人為破壞造成的設備毀壞,如爆炸、火災等引起數據庫服務器的毀壞?
介質故障比事務故障和系統故障發生的可能性要小,但破壞性更大,有時是難以恢復的?
四、不一致錯誤
1、故障導致數據庫出現的不一致錯誤,與系統的數據庫讀寫操作策略有關
2、數據庫系統的數據讀寫
在數據庫系統中,數據庫常駐于非易失性存儲器,通常為磁盤。由于讀取磁盤的速度相對來說是比較慢的,為了能夠加快處理數據的速度,須將事務讀取的數據緩存在內存里,讀取的數據所在的內存區域稱為數據庫緩沖區,當事務執行時,首先到緩沖區中去讀取數據,假設要讀取的數據這里用X表示,當數據X不在緩沖區中,則需由緩沖區管理器將數據庫中X所在磁盤塊的內容由磁盤輸入到內存中,即執行input操作,然后數據X被事務讀取到事務的私有工作區,即執行read操作,在工作區內完成對數據X的拷貝t的處理,事務可在每一個更新操作后,將t值復制給緩沖區中的數據X,即執行write操作,如果此時數據X不在緩沖區內,也需要首先執行input操作,將數據X從磁盤讀入到數據庫緩沖區中,數據庫緩沖區中的數據更新到磁盤上,也需要由緩沖區執行output操作
因此,為了更好地闡述問題,也為了更好地理解數據庫管理系統的實現技術,后續我們將事務中的數據庫操作,用對數據庫緩沖區的讀寫操作來表示
3、對于從賬戶A轉賬1000元到賬戶B的轉賬事務,我們就可以用這樣的對緩沖區數據A和B的讀寫來表達對數據庫中賬戶A和賬戶B余額的讀寫操作
4、假設恢復機制采用一種竊取但不強制的緩沖區管理策略,這也是一些DBMS的事務處理機制實際采用的策略
- 該策略的思想是為了從磁盤上輸入事務B所需的數據到內存,需要占用事務A所處理的數據使用的內存空間,就要先將事務A所處理的數據輸出到磁盤上,即執行事務A所處理數據的output操作,再執行事務B所需的數據的input操作,此時稱事務B竊取事務A的空間
- 此外,在事務提交后,其他事務可能仍會訪問緩沖區中的數據庫數據,因此并不要求將事務的更新結果立即反應到磁盤上,即不強制地執行output操作。
至于竊取哪個事務占用的內存空間,以及何時強制執行提交事務所寫數據的output操作由緩沖區管理器根據具體的緩沖器置換算法來決定,比如采用一種LRU即最近最久未使用算法
5、當恢復機制采用這種竊取不強制的緩沖區管理策略
- 就會出現在事務提交之前,事務的部分執行結果可能已被更新到磁盤上的數據庫中。
- 而事務提交后,事務的執行結果并沒有立即更新到磁盤上的數據庫中
6、這樣就導致在發生事務故障后
- 事務不能正常提交,但夭折的事務的部分執行結果可能已對數據庫進行了更新。事務沒有保持原子性
?7、在發生系統故障后
- 在發生系統故障后,除了夭折的事務的部分執行結果可能已經寫入磁盤上的數據庫,有些已提交的事務對數據庫的更新結果可能有一部分甚至全部還在緩沖區中,尚未寫回到磁盤上的數據庫中,事務沒有保持持久性
8、在發生介質故障后
- 不僅影響正在存取磁盤上數據庫的所有運行事務,使得這些事務夭折,更主要會破壞磁盤上的數據庫,使已提交的事務對數據庫的更新結果丟失,事務不能保持持久性
因此,當數據庫系統發生故障后,數據庫可能會出現這三種錯誤現象,處于暫時的不一致錯誤狀態,破壞了事務的原子性和持久性?
五、小結
1、事務處理的恢復機制,就是要在數據庫系統發生各類故障后,對于可能處于不一致錯誤狀態的數據庫,采取一定的恢復技術,并運用相關的恢復策略,來保持事務的原子性和持久性,將數據庫恢復到一個一致性狀態
2、不同的DBMS的事務處理機制所采用的緩沖區管理策略可能不同,發生故障后的數據庫不一致錯誤也會不同,恢復技術和恢復策略的具體實現也會有所不同?