DBMS事務屬性


事務具有四個屬性,這些用於在事務之前和之後維護資料庫的一致性。

事務屬性

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔離性(Isolation)
  • 永續性(Durability)

1. 原子性

  • 它宣告事務的所有操作如有一個發生失敗,則事務中止。
  • 事務沒有中途,即事務不能部分發生。 每個事務都被視為一個單元,並且執行完成或根本不執行。

原子性涉及以下兩個操作:

中止: 如果事務中止,則所有更改都不可見。
提交: 如果事務提交,則所有更改都是可見的。

範例: 假設事務T跟隨T1T2。假設A賬戶有600元,B由賬戶有300元。將賬戶A100轉賬到賬戶B

T1 T2
Read(A),A:= A-100,Write(A) Read(B),Y:= Y+100,Write(B)

正常情況下事務完成後,賬戶A500元,賬戶B400元。

如果事務T在事務T1完成之後但在事務T2完成之前失敗,則金額將從賬戶A中扣除但不會新增到賬戶B。這表示資料庫狀態不一致。為了確保資料庫狀態的正確性,必須完整地執行事務。

2. 一致性

  • 保持完整性約束,以便資料庫在事務之前和之後保持一致。
  • 事務的執行將使資料庫處於其先前穩定狀態或新穩定狀態。
  • 資料庫的一致屬性宣告每個事務都看到一致的資料庫範例。
  • 事務用於將資料庫從一個一致狀態轉換為另一個一致狀態。

例如: 必須在交易之前或之後維持總金額。

T發生之前的總計 = 600+300=900  
T發生之後的總計 = 500+400=900

因此,資料庫是一致的。 在T1完成但T2失敗的情況下,將發生不一致。

3. 隔離性

  • 它表示,在第一個事務完成之前,第二個事務不能使用在執行事務時使用的資料。
  • 在隔離中,如果正在執行事務T1並使用資料項X,則在事務T1結束之前,任何其他事務T2都不能存取該資料項。
  • DBMS的並行控制子系統強制執行隔離屬性。

4. 永續性

  • 永續性屬性用於指示資料庫的狀態一致的情況,它宣告事務發生了永久性變化。
  • 它們不會因錯誤的事務錯誤操作或系統故障而丟失。 當事務完成時,資料庫將達到稱為一致狀態的狀態。 即使在系統出現故障的情況下,也不會丟失其一致狀態。
  • DBMS的恢復子系統負責隔離性屬性。