資料庫系統中事務的ACID原則

來源:互聯網
上載者:User

標籤:

事務的原子性、一致性、獨立性及持久性 
事務的原子性是指一個事務要麼全部執行,要麼不執行.也就是說一個事務不可能只執行了一半就停止了.比如你從取款機取錢,這個事務可以分成兩個步驟:1劃卡,2出錢.不可能划了卡,而錢卻沒出來.這兩步必須同時完成.要麼就不完成. 
事務的一致性是指事務的運行並不改變資料庫中資料的一致性.例如,完整性條件約束了a+b=10,一個事務改變了a,那麼b也應該隨之改變. 
事務的獨立性是指兩個以上的事務不會出現交錯執行的狀態.因為這樣可能會導致資料不一致. 
事務的持久性是指事務運行成功以後,就系統的更新是永久的.不會無緣無故的復原.

當交易處理系統建立事務時,將確保事務有某些特性。組件的開發人員們假設事務的特性應該是一些不需要他們親自管理的特性。這些特性稱為ACID特性。 
ACID就是:原子性(Atomicity )、一致性( Consistency )、隔離性或獨立性( Isolation)和持久性(Durabilily)。 
1. 原子性 
原子性屬性用於標識事務是否完全地完成,一個事務的任何更新要在系統上完全完成,如果由於某種原因出錯,事務不能完成它的全部任務,系統將返回到事務開始前的狀態。 
讓我們再看一下銀行轉帳的例子。如果在轉帳的過程中出現錯誤,整個事務將會復原。只有當事務中的所有部分都成功執行了,才將事務寫入磁碟並使變化永久化。 
為了提供復原或者撤消未提交的變化的能力,許多資料來源採用日誌機制。例如,SQL Server使用一個預寫交易記錄,在將資料應用於(或提交到)實際資料頁面前,先寫在交易記錄上。但是,其他一些資料來源不是關係型資料庫管理系統 (RDBMS),它們管理未提交事務的方式完全不同。只要交易回復時,資料來源可以撤消所有未提交的改變,那麼這種技術應該可用於管理事務。 
2. 一致性 
事務在系統完整性中實施一致性,這通過保證系統的任何事務最後都處於有效狀態來實現。如果事務成功地完成,那麼系統中所有變化將正確地應用,系統處於有效狀態。如果在事務中出現錯誤,那麼系統中的所有變化將自動地復原,系統返回到原始狀態。因為事務開 
始時系統處於一致狀態,所以現在系統仍然處於一致狀態。 
再讓我們回頭看一下銀行轉帳的例子,在帳戶轉換和資金轉移前,帳戶處於有效狀態。如果事務成功地完成,並且提交事務,則帳戶處於新的有效狀態。如果事務出錯,終止後,帳戶返回到原先的有效狀態。 
記住,事務不負責實施資料完整性,而僅僅負責在事務提交或終止以後確保資料返回到一致狀態。理解資料完整性規則並寫代碼實現完整性的重任通常落在開發人員肩上,他們根據業務要求進行設計。 
當許多使用者同時使用和修改同樣的資料時,事務必須保持其資料的完整性和一致性。因此我們進一步研究A C I D特性中的下一個特性:隔離性。 
3. 隔離性 
在隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,運行在相同的時間內,執行相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。 
這種屬性有時稱為序列化,為了防止事務操作間的混淆,必須序列化或序列化請求,使得在同一時間僅有一個請求用於同一資料。 
重要的是,在隔離狀態執行事務,系統的狀態有可能是不一致的,在結束事務前,應確保系統處於一致狀態。但是在每個單獨的事務中,系統的狀態可能會發生變化。如果事務不是在隔離狀態運行,它就可能從系統中訪問資料,而系統可能處於不一致狀態。通過提供事 
務隔離,可以阻止這類事件的發生。 
在銀行的樣本中,這意味著在這個系統內,其他過程和事務在我們的事務完成前看不到我們的事務引起的任何變化,這對於終止的情況非常重要。如果有另一個過程根據帳戶餘額進行相應處理,而它在我們的事務完成前就能看到它造成的變化,那麼這個過程的決策可能 
建立在錯誤的資料之上,因為我們的事務可能終止。這就是說明了為什麼事務產生的變化,直到事務完成,才對系統的其他部分可見。 
隔離性不僅僅保證多個事務不能同時修改相同資料,而且能夠保證事務操作產生的變化直到變化被提交或終止時才能對另一個事務可見,並發的事務彼此之 間毫無影 響。這就意味著所有要求修改或讀取的資料已經被鎖定在事務中,直到事務完成才能釋放。大多數資料庫,例如SQL Server以及其他的RDBMS,通過使用鎖定來實現隔離,事務中涉及的各個資料項目或資料集使用鎖定來防止並發訪問。 
4. 持久性 
持久性意味著一旦事務執行成功,在系統中產生的所有變化將是永久的。應該存在一些檢查點防止在系統失敗時丟失資訊。甚至硬體本身失敗,系統的狀態仍能通過在日誌中記錄事務完成的任務進行重建。持久性的概念允許開發人員認為不管系統以後發生了什麼變化,完 
成的事務是系統永久的部分。 
在銀行的例子中,資金的轉移是永久的,一直保持在系統中。這聽起來似乎簡單,但這,依賴於將資料寫入磁碟,特別需要指出的是,在事務完全完成並提交後才寫入磁碟的。 
所有這些事務特性,不管其內部如何關聯,僅僅是保證從事務開始到事務完成,不管事務成功與否,都能正確地管理事務涉及的資料   當交易處理系統建立事務 時,將確保事務有某些特性。組件的開發人員們假設事務的特性應該是一些不需要他們親自管理的特性。這些特性稱為ACID特性。

資料庫系統中事務的ACID原則

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.