事務是一系列的資料庫操作,是資料庫應用程式的基本邏輯單元。事務處理(transaction processing)技術主要包括資料庫恢復技術和併發控制技術。
事務:是使用者定義的乙個資料庫操作序列,是乙個不可分割的工作單位(原子性)
一般的,乙個程式中被包含多個事務。如果使用者沒有顯式的定義事務,則dbms自動劃分事務。
事務一般以begin transaction開始,以commit或rollback結束。rollback表示回滾,系統將事務中對資料庫的所有已完成的操作全部撤銷,回滾到事務開始時的狀態。
事務的acid特性
原子性:事務中的操作要麼都做,要麼都不做
一致性:事務執行的結果必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態
隔離性:乙個事物的執行不能被其他事務干擾,併發執行的各個事務之間不能互相干擾
持續性:乙個事務一旦提交,它對資料庫中資料的改變就應該是永久性的
可能破壞事務acid特性的因素有:
1. 多個事務併發執行時,不同事務的操作交叉執行
2. 事務在執行過程中被強行停止
資料庫的恢復:把資料庫從錯誤狀態恢復到某一已知的正確狀態
事物內部的故障:只影響這個事物本身,一般是非預期的,如運算溢位、因為死鎖被撤銷等,解決方法是強行回滾,稱為事務撤銷
系統故障(軟故障):造成系統停止運轉的任何事件,使得系統重新啟動。影響正在執行的所有事務,但不破壞資料庫。
解決方法:清除所有未完成的事務對資料庫的所有更改。同時重做所有已提交的事務(因為這些已提交的事務可能還在緩衝區沒寫到磁碟上的物理資料庫上)
介質故障(硬故障):指外存故障,如磁碟損壞
解決方法:備份
計算機病毒:產生故障的原因,本身不是故障,可能產生故障2或3
建立冗餘資料:
1. 資料轉儲
2. 登記日誌檔案
靜態轉儲:系統中無執行事務時進行的轉儲,轉儲期間不允許任何事務執行。
優點:得到的一定是乙個資料一致性的副本
缺點:降低了資料庫的可用性
動態轉儲:轉儲和使用者事務可以併發執行
優點:系統可用性較好
缺點:轉儲得到的副本不一定一致,因此必須建立日誌檔案等級轉儲期間各事務對資料庫的修改活動
日誌檔案的格式和內容
兩種格式:以記錄為單位/以資料塊為單位
需要登記的內容:
日誌檔案的作用:
事務/系統故障恢復必須用日誌檔案
動態轉儲必須建立日誌檔案,後備副本和日誌檔案結合才能有效地恢復
靜態轉儲中:
登記日誌檔案的兩條原則
登記的次序按併發事務執行的時間次序
必須先寫日誌檔案,後寫資料庫
系統自動完成的,對使用者是透明的
恢復步驟:
1. 反向掃瞄日誌檔案,查詢該事務的更新操作
2. 對該事務的更新操作執行逆操作
3. 重複12,直至讀到此事務的開始標記
系統在重新啟動時自動完成的,不需要使用者干預
恢復步驟:
1. 正向掃瞄日誌檔案,找出故障發生前已經提交的事務(有begin有commit),記入重做事務。同時找出未完成的事務(只有begin),加入撤銷佇列
2. 對撤銷佇列中的事務進行撤銷處理:反向掃瞄並執行逆操作
3. 對重做佇列中的各個事務進行重做處理:正向掃瞄並重做
恢復方法:
1. 裝入最新的資料庫後備副本,對於動態轉儲還需同時裝入轉儲開始時刻的日誌檔案副本
2. 裝入相應的日誌檔案副本**儲結束時刻的日誌檔案副本),重做已完成的事務
檢查點記錄的內容:
- 建立檢查點時刻所有正在執行的事務清單
- 這些事務最近乙個日誌記錄的位址
- 重新開始檔案記錄檢查點記錄
- 檢查點記錄裡面記錄活躍的事務:t1t2,以及它們的最後日誌記錄d1d2
恢復方法:
日誌刷出去了以後系統故障:沒問題,因為這個檢查點還沒寫到重新開始檔案上,寫重新開始檔案是最後一步
用途:
1. 介質故障時將應用遷移到映象資料庫,使資料庫可以繼續使用,同時恢復著資料庫
2. 提供系統併發訪問
實際應用中使用者往往只對關鍵資料和日誌檔案進行映象
第十章 資料庫恢復技術
一 事務 1,定義 事務是使用者定義的乙個資料庫操作系列,這些操作要麼全做,要麼全不做,是乙個不可分割的工作單位 2,事務和程式是兩個概念,乙個程式可以包含多個事務 3,事務是恢復和併發控制的基本單位 4,事務的特性 1 原子性 2 一致性 3 隔離性 4 持續性 注 事務特性的作用 保證事務aci...
資料庫原理第十章 資料庫恢復技術
事務 所謂事務是使用者定義的乙個資料庫操作序列,這些操作要麼全做,要麼不做,是乙個不可分割的工作單位。事務的開始和結束可以由使用者顯示控制。如果使用者沒有顯示定義事務,則由資料庫管理系統按預設規定自動劃分事務。在sql中定義事務的語句一般有以下三條 開啟事務 begin transaction 事務...
資料庫作業20 第十章 資料庫恢復技術
故障發生前已經提交的事務 既有begin transaction記錄,也有commit記錄 這些事務需要重做。故障發生時還未完成的事務 只有begin transaction記錄,無對應的 commit記錄 這些事務需要回滾。故障發生時還沒開始的事務就沒意義了。1 故障在14之後,在故障發生之前已經...