DBMS 中的不同事務隔離級別是什麼?


在事務的情況下,術語 ACID 被大量使用來陳述事務必須遵循的一些重要屬性。我們都知道 ACID 代表原子性、一致性、隔離性和永續性,這些屬性統稱為 ACID 屬性。

事務的屬性

資料庫系統確保 ACID 屬性 -

  • 原子性 - 事務操作要麼全部完成,要麼全部不完成。

  • 一致性 - 事務從一個一致(正確)狀態轉換到另一個一致狀態。

  • 隔離性 - 一個事務與其他事務隔離。即一個事務不受另一個事務的影響。儘管多個事務併發執行,但它必須看起來好像事務是序列執行的(一個接一個)。

  • 永續性 - 事務的結果是永久的,即結果不會因後續故障而丟失,永續性指的是永續性,即永久性。

隔離性

它確定其他系統的交易的可見性。較低的級別允許每個使用者訪問相同的資料。因此,它涉及到系統資料隱私和安全的高風險。但是,較高的隔離級別減少了對資料的併發型別,但需要更多資源並且比較低的隔離級別慢。

隔離協議有助於保護資料免受不需要的事務的影響。它們透過定義一個操作所做的更改何時以及如何對其他操作可見來維護每個資料的完整性。

隔離級別

下面解釋了四個隔離級別 -

  • 讀取未提交 - 這是最低級別的隔離。在此級別;允許髒讀,這意味著可以讀取另一個事務未提交的更改。

  • 讀取已提交 - 它不允許髒讀,並明確說明任何未提交的資料現在已提交,現在已讀取。

  • 可重複讀 - 這是最受限制的隔離級別。事務在其引用的所有行上持有讀鎖,在其更新/插入/刪除的所有行上持有寫鎖。因此,沒有不可重複讀取的可能性。

  • 可序列化 - 最高級別的文明。它確定所有併發事務都應序列執行。

示例

考慮一個隔離的例子。

事務 E 的隔離級別是什麼?

session begins

設定全域性事務

隔離級別可序列化;

session ends
session begins

設定會話事務

隔離級別可重複讀;

transaction A
transaction B

設定事務

隔離級別讀取未提交;

transaction C

設定事務

隔離級別讀取已提交;

transaction D
transaction E
session ends

檢查哪個選項 -

A- Serializable
B- Repeatable read
C- Read uncommitted

解決方案

可重複讀是正確的答案。

原因和解釋

  • 步驟 1 - 在上面的程式中,第一個會話開始並結束,而沒有執行任何事務。

  • 步驟 2 - 第二個會話在會話級別以隔離級別“可重複讀”開始。事務 A 和 B 使用這些設定執行。

  • 步驟 3 - 再次,一個新的事務以隔離級別“讀取未提交”開始。此設定僅用於“事務 C”,因為僅提到了“設定事務”。如果使用“設定事務”而不使用全域性或會話關鍵字,則這些特定設定僅適用於單個事務。

  • 步驟 4 - 再次,“設定事務”以及隔離級別讀取已提交僅適用於事務 D。(請參閱步驟 3 以瞭解原因)

  • 步驟 5 - “事務 E”在“可重複讀”中繼續,因為在步驟 2 中開始的事務尚未結束。步驟 3 和步驟 4 中設定的事務隔離級別在執行單個事務後消失。因此,自動“事務 E”將參考先前的事務設定。

更新於: 2021-07-08

7K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告