關系數據庫維護

DBMS必須提供數據庫的恢復、數據庫的并發控制、數據庫的完整性檢查和數據庫的安全性保護四個方面的功能。

數據庫的恢復功能:計算機系統的硬件故障、軟件故障、操作員的失誤以及惡意的破壞都會影響數據庫中數據的正確性,甚至造成數據庫部分或全部數據的丟失,DBMS必須具有將數據庫從錯誤狀態恢復到某一已知的正確狀態的功能。

并發控制功能:當多個用戶的并發進程同時存取、修改數據庫時,可能會發生相互干擾而得到錯誤的結果或使得數據庫的完整性遭到破壞,DBMS必須具有對多用戶的并發操作加以控制和協調的功能。

數據庫的完整性:指數據庫中數據的正確性、有效性和相容性,DBMS必須具有將數據控制在有效的范圍內,或保證數據之間滿足一定的關系的功能,這就是數據庫的完整性檢查功能。

數據庫的安全性保護功能:是指保護數據,以防止不合法的使用造成的數據的泄密和破壞,DBMS必須具有使每個用戶只能按規定對某些數據以某些方式進行使用和處理的功能。

事務是用戶定義的一個數據庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位。事務和程序是兩個概念。在關系數據庫中,一個事務可以是一條SQL語句,一組SQL語句或整個程序;一個應用程序通常包含多個事務。事務是恢復和并發控制的基本單位。

事務的開始與結束可以由用戶顯式定義。在SQL中,顯式定義事務的語句有三條:BEGIN TRANSACTION;COMMIT;ROLLBACK。通常是以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK結束。COMMIT表示事務正常結束,提交事務的所有操作,事務中所有對數據庫的更新永久生效。ROLLBACK表示事務異常終止,事務運行的過程中發生了故障,不能繼續執行,系統將事務中對數據庫的所有已完成的操作全部撤銷,回滾事務所有更新操作,事務回滾到開始時的狀態。當用戶沒有顯式地定義事務時,DBMS按缺省規定隱式自動劃分事務。

事務的ACID特性是指事務具有四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。

1. 原子性:事務是數據庫的邏輯工作單位。事務中包括的諸操作要么都做,要么都不做。

2. 一致性:事務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態。當數據庫中只包含成功事務提交的結果時,就說數據庫處于一致性狀態,如果數據庫系統運行中發生故障,有些事務尚未完成就被迫中斷,這些未完成事務對數據庫所做的修改有一部分已寫入物理數據庫,這時數據庫就處于一種不正確的狀態,或者說是不一致的狀態。

3. 隔離性:對并發執行而言,一個事務的執行不能被其他事務干擾。一個事務內部的操作及使用的數據對其他并發事務是隔離的,并發執行的各個事務之間不能互相干擾。

4. 持續性:持續性也稱永久性(Permanence),一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。

數據庫管理系統必須具有把數據庫從錯誤狀態恢復到某一已知的正確狀態(亦即一致性狀態)的功能,這就是數據庫的恢復。

故障類型

數據庫系統中可能發生各種各樣的故障,大致可以分以下幾類:

1. 事務故障

事務故障是指某個事務在運行過程中由于種種原因未能運行至終止點(COMMIT或ROLLBACK),發生故障。

事務故障的常見原因包括輸入數據有誤、運算溢出、違反了完整性限制、應用程序出錯、并行事務發生死鎖等。

發生事務故障時,未完成的事務可能把對數據庫的部分修改寫回磁盤,此時的數據庫可能處于不正確的狀態,恢復程序要在不影響其它事務運行的情況下,強行回滾(ROLLBACK)該事務,清除該事務對數據庫的所有修改,使得這個事務好像根本沒有運行過一樣。

2. 系統故障

系統故障是指由于操作系統或DBMS代碼錯誤、特定類型的硬件錯誤(如CPU故障)或突然停電等原因,使得系統要重新啟動。發生系統故障時,所有正在運行的事務都非正常終止,內存中數據庫緩沖區的信息全部丟失,但外部存儲設備上的數據未受影響。

發生系統故障時,一些尚未完成的事務的結果可能已被寫入物理數據庫,從而造成數據庫可能處于不正確的狀態。為保證數據一致性,需要清除這些事務對數據庫的所有修改?;謴妥酉到y必須在系統重新啟動時讓所有非正常終止的事務回滾,強行撤銷(UNDO)所有未完成的事務。

另一方面,發生系統故障時,有些已完成事務的結果可能有一部分甚至全部留在緩沖區,尚未寫入磁盤的物理數據庫中,系統故障使得這些事務對數據庫的修改部分或全部丟失,這也會使數據庫處于不一致狀態,因此應將這些事務已提交的結果重新寫入數據庫?;謴妥酉到y必須在系統重新啟動時需要重做(REDO)所有已提交的事務,以將數據庫恢復到一致狀態。

3. 介質故障

系統故障稱為軟故障(Soft Crash),介質故障稱為硬故障(Hard Crash)。介質故障是指由于磁盤損壞、磁頭碰撞、瞬時強磁場干擾等原因,使得存儲在外存中的數據部分丟失或全部丟失。

介質故障比前兩類故障的可能性小得多,但破壞性大得多。

關鍵概念:事務故障和系統故障不會破壞外存中數據庫的數據,介質故障會破壞存放在外存的數據庫中的部分或全部數據。

總結各類故障,對數據庫的影響有兩種可能性。一是數據庫本身被破壞,二是數據庫沒有被破壞,但數據可能不正確。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。