第四題: 請回答下列問題: (一)資料庫系統於執行交易(transition)過程中,視情況需要會下達 COMMIT 或 ROLLBACK 指令,請問執行此兩項指令之時機與目的分別為何?【8 分】
詳解 (共 1 筆)
詳解
在資料庫系統中,交易(transaction)是一組可以被視為單一邏輯工作單位的操作。交易要麼完全執行,要麼完全不執行,以確保資料的一致性和完整性。交易的管理通常涉及兩個關鍵指令:COMMIT 和 ROLLBACK。以下是這兩個指令的執行時機與目的:
COMMIT
執行時機
- 交易成功完成:
- 當交易中的所有操作都成功執行且沒有錯誤時,會下達 COMMIT 指令。
- 當應用程序邏輯判斷交易中的所有條件都滿足時,會下達 COMMIT 指令。
目的
- 永久保存變更:
- COMMIT 指令會將交易中的所有變更永久寫入資料庫,使得這些變更在系統崩潰或重啟後依然存在。
- 釋放鎖資源:
- 當 COMMIT 指令執行後,資料庫系統會釋放交易期間持有的所有鎖,以便其他交易可以訪問這些資源。
- 確保資料一致性:
- 通過執行 COMMIT,可以確保資料庫從一個一致狀態轉換到另一個一致狀態,維護資料完整性。
ROLLBACK
執行時機
-
交易失敗或錯誤:
- 當交易中的某個操作失敗(如違反資料完整性約束、SQL 語法錯誤等)時,會下達 ROLLBACK 指令。
- 當系統或應用程序檢測到一些異常情況(如資源不可用、連接丟失等)時,會下達 ROLLBACK 指令。
-
應用程序邏輯要求:
- 當應用程序邏輯判斷某些條件未滿足,需要回退所有操作時,會下達 ROLLBACK 指令。
目的
- 撤銷變更:
- ROLLBACK 指令會撤銷交易中的所有變更,使資料庫恢復到交易開始前的狀態。
- 釋放鎖資源:
- 當 ROLLBACK 指令執行後,資料庫系統會釋放交易期間持有的所有鎖,以便其他交易可以訪問這些資源。
- 保護資料一致性:
- 通過執行 ROLLBACK,可以避免因為部分成功的交易操作導致資料庫進入不一致狀態,從而保護資料完整性。