DDBMS - 事務處理系統



本章討論事務處理的各個方面。我們還將學習事務中包含的低階任務、事務狀態和事務屬性。在最後一部分,我們將回顧排程和排程的可序列化。

事務

事務是一個程式,包括一系列資料庫操作,作為邏輯資料處理單元執行。事務中執行的操作包括一個或多個數據庫操作,例如插入、刪除、更新或檢索資料。它是一個原子過程,要麼完全完成,要麼根本不執行。僅涉及資料檢索而不涉及任何資料更新的事務稱為只讀事務。

每個高階操作都可以細分為許多低階任務或操作。例如,資料更新操作可以分為三個任務:

  • read_item() - 從儲存器讀取資料項到主記憶體。

  • modify_item() - 更改主記憶體中專案的價值。

  • write_item() - 將修改後的值從主記憶體寫入儲存器。

資料庫訪問僅限於read_item()和write_item()操作。同樣,對於所有事務,讀取和寫入構成基本的資料庫操作。

事務操作

事務中執行的低階操作包括:

  • begin_transaction - 指定事務執行開始的標記。

  • read_item 或 write_item - 作為事務一部分,可能與主記憶體操作交錯的資料庫操作。

  • end_transaction - 指定事務結束的標記。

  • commit - 一個訊號,指定事務已成功完成,並且不會被撤消。

  • rollback - 一個訊號,指定事務不成功,因此資料庫中的所有臨時更改都被撤消。已提交的事務不能回滾。

事務狀態

事務可能經歷五個狀態的子集:活動、部分提交、已提交、失敗和已中止。

  • 活動 - 事務進入的初始狀態是活動狀態。在執行讀取、寫入或其他操作時,事務保持在此狀態。

  • 部分提交 - 在執行事務的最後一條語句後,事務進入此狀態。

  • 已提交 - 在事務成功完成並且系統檢查發出提交訊號後,事務進入此狀態。

  • 失敗 - 當發現無法繼續正常執行或系統檢查失敗時,事務從部分提交狀態或活動狀態變為失敗狀態。

  • 已中止 - 這是事務在失敗後回滾並且資料庫已恢復到事務開始之前的狀態後的狀態。

以下狀態轉換圖描述了事務中的狀態以及導致狀態更改的低階事務操作。

State Transition Diagram

事務的理想屬性

任何事務都必須維護ACID屬性,即原子性、一致性、隔離性和永續性。

  • 原子性 - 此屬性指出事務是處理的原子單元,也就是說,要麼完全執行,要麼根本不執行。不應該存在部分更新。

  • 一致性 - 事務應該將資料庫從一個一致狀態帶到另一個一致狀態。它不應該對資料庫中的任何資料項產生不利影響。

  • 隔離性 - 事務應該像系統中唯一的事務一樣執行。不應有任何來自同時執行的其他併發事務的干擾。

  • 永續性 - 如果已提交的事務帶來更改,則該更改應在資料庫中持久存在,並且在發生任何故障時不會丟失。

排程和衝突

在一個有多個併發事務的系統中,**排程**是操作的總執行順序。給定一個包含n個事務(例如T1、T2、T3……Tn)的排程S;對於任何事務Ti,Ti中的操作必須按照排程S中規定的順序執行。

排程的型別

有兩種型別的排程:

  • 序列排程 - 在序列排程中,在任何時間點,只有一個事務處於活動狀態,即沒有事務重疊。這在下圖中顯示:

Serial Schedules
  • 並行排程 - 在並行排程中,多個事務同時處於活動狀態,即事務包含時間上重疊的操作。這在下圖中顯示:

Parallel Schedules

排程中的衝突

在一個包含多個事務的排程中,當兩個活動事務執行不相容的操作時,就會發生**衝突**。當以下三個條件同時存在時,兩個操作被稱為衝突:

  • 這兩個操作是不同事務的一部分。

  • 這兩個操作都訪問相同的資料項。

  • 至少一個操作是write_item()操作,即它試圖修改資料項。

可序列化

‘n’個事務的**可序列化排程**是一個並行排程,它等效於包含相同‘n’個事務的序列排程。可序列化排程包含序列排程的正確性,同時確保並行排程的更好的CPU利用率。

排程的等價性

兩個排程的等價性可以是以下型別:

  • 結果等價 - 產生相同結果的兩個排程被稱為結果等價。

  • 檢視等價 - 以類似方式執行類似操作的兩個排程被稱為檢視等價。

  • 衝突等價 - 如果兩個排程包含相同的交易集並且具有相同的衝突操作對順序,則稱它們為衝突等價。

廣告
© . All rights reserved.