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的恢復子系統負責隔離性屬性。

上一篇: DBMS事務 下一篇: DBMS事務的狀態