數據庫系統概論(三)數據庫恢復技術--事務、恢復、故障、檢查點


事務

事務(transaction)是用戶定義的一個數據庫操作序列,這些操作要么全做要么全不做,是一個不可分割的工作單位

事務和程序是兩個概念,一個事務可以是一條/一組SQL語句,也可以是整個程序

事務是恢復和並發控制的基本單位、

BEGIN TRANSACTION

SQL 語句1

SQL 語句2

COMMIT/ROLLBACK

事務的ACID特性

原子性(Atomicity):事務中的操作要么全做要么全不做(由DBMS的事務管理子系統來實現)

一致性(Consistence):事務執行的結果必然是從一個一致性狀態到另一個一致性狀態(由DBMS的完整性子系統執行測試任務)

一致性狀態:數據庫中只包含事務成功提交的結果

不一致性狀態:數據庫中包含尚未提交被迫中斷的事務,未完成的事務對數據的修改一部分寫入數據庫,導致數據庫不正確

隔離性(Isolation):一個事務的執行不能被其他事務干擾,事務的內部操作和使用的數據對其他事務是隔離的(由DBMS的並發控制子系統實現)

持續性(Durability)/永久性(Permanence):一個事務一旦提交,對數據的修改就是永久性的(由DBMS的恢復管理子系統實現的)

數據庫恢復

故障的種類

①事務內部的故障:事務在運行至正常終點前被終止

有的是可以由事務程序發現的,有些是非預期的事務終止

事務可以通過rollback修復預期之中故障

更多的故障是非預期的,如運算溢出、死鎖

②系統故障(軟故障):CPU錯誤、系統斷電等造成的系統運轉停止

系統故障不破壞數據庫,只會造成事務的非正常終止,內存中數據庫緩沖區丟失

系統故障的恢復需要:

撤銷(undo)所有未完成的事務(事務非正常終止)

重做(redo)所有已提交的事務(有些已完成的事務可能有部分留在緩沖區尚未寫入數據庫)

③介質故障(硬故障):磁盤損壞、強磁場干擾造成的介質故障

④計算機病毒

恢復技術

恢復技術包括兩個部分:建立冗余數據+ 利用冗余數據進行恢復

建立冗余數據

1.數據轉儲:轉儲是將數據庫定期復制到磁盤或其他存儲介質上,備用數據稱為后備副本(backup)

①靜態轉儲:轉儲時不能有事務運行,數據庫必須處於一致性狀態即事務已經全部提交,沒有正在運行的事務

②動態轉儲:轉儲與事務同時進行,不能保證副本中數據庫的一致性

需要把動態存儲期間各事務的修改活動記錄為日志,后備文件+日志即可恢復

③海量存儲:每次轉儲數據庫全部信息

④增量存儲:每次轉儲上次轉儲后的更新數據

2.日志文件:以記錄/數據塊為單位的日志文件,用於事務/系統故障的恢復

動態轉儲一定要有日志,靜態轉儲也可以有日志

以記錄為單位

T1 BEGIN TRANSACNTION

  T1 U(update) AA 18(→)20

  T1 I(insert) BB 12

TI COMMIT/ROLLBACK

必須先寫日志文件,后寫數據庫 因為有可能在寫日志和修改數據之間出現故障,先寫數據庫修改可能導致日志沒有記下這次修改,而先寫日志只不過是多執行一次不必要的undo操作

3.恢復策略

①事務故障恢復:事務在運行至正常終點前被終止

(1)反向掃描日志,查找事務更新操作

(2)對更新操作進行逆操作,插入→刪除,刪除→插入,修改前的值→修改后

(3)循環至事務開始

②系統故障的恢復:系統終止造成數據庫不一致狀態

(1)正向掃描日志,有BEGIN TRANSANCTION和COMMIT的加入REDO隊列

  只有BEGIN TRANSANCTION沒有COMMIT的加入UNDO隊列

(2)對UNDO隊列做UNDO(寫入修改前的值),REDO隊列做REDO(寫入修改后的值)

③介質故障的恢復:(1)裝入最新的數據庫后備副本,對於靜態副本,裝入即一致性狀態,對於動態副本做同上的REDO+UNDO

(2)裝入轉儲后的日志副本,REDO

小結:

  事務故障恢復:UNDO

  系統故障恢復:REDO+UNDO

  介質故障恢復:裝入后備副本+REDO

4.檢查點技術+鏡像技術

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM