Navicat 部落格

認識資料庫交易 2021 年 4 月 16 日,由 Robert Gravelle 撰寫

Atomicity Consistency Isolation Durability(原子性、一致性、隔離性、持久性),或稱「ACID」,由 Andreas Reuter 於 1983 年提出。它是資料庫管理系統(DBMS)中的一個概念,它標識了一組用於保證資料庫可靠性的標準特性。ACID 特性確保所有資料庫交易保持準確和一致,並支援從處理作業期間可能發生的故障中恢復。因此,它幾乎在所有關聯式資料庫中實作。

事實證明,提供交易支援的 DBMS 會自動強制執行四個 ACID 特性。在今天的文章中,我們將學習交易如何做到這一點。在接下來的文章中,我們將研究如何在預存程序中使用交易來防止資料不一致。

交易的說明

在預存程序中使用交易之前,了解什麼是交易可能對我們有幫助。簡單來說,交易是執行的一組作業。它能保證所有作業都是作為一個單元執行成功或執行失敗。

舉個例子,我們將錢從支票帳戶轉移到儲蓄帳戶。這個動作實際上由兩部分組成:

  • 從支票帳戶中提取款項。
  • 將款項存入儲蓄帳戶。

現在,想像一下如果第一步之後停電了會發生什麼事情。如果從支票帳戶中扣除了款項但未將它存入儲蓄帳戶中,我認為我們都同意那是一個問題!正如你不希望在財務交易中發生這種情況一樣,我們也不希望更新一個資料庫資料表時沒有更新參考它的資料表。使用交易就可以保證兩個作業一起成功或一起失敗。這樣,所有涉及的實體將保持一致狀態。

ACID 和交易

交易在強制執行四個 ACID 特性(Atomicity、Consistency、solation 和 Durability)中擔當關鍵的角色。讓我們看看是怎麼做到的。

原子性(Atomicity)

如果無法將一個資料庫作業進一步分解為不同的作業,則該資料庫作業被視為不可部分完成(atomic)作業。而交易也是原子的,因為交易中發生的所有作業如果不是一起成功,就是一起失敗。即是如果在交易過程中任何單一作業失敗,則整次交易都被視為失敗,並且必須復原(回溯)到交易發生前的狀態。

一致性(Consistency)

使用交易的主要好處之一是,無論交易是否成功完成,它都能使資料庫處於一致的狀態。這確保了交易修改的資料符合欄的所有條件約束,從而保持資料完整性。

隔離性(Isolation)

每個交易都與其他交易隔離。因此,一個交易不應影響同時執行的其他交易。換句話說,一個交易的資料修改應與其他交易的資料修改隔離。因此,雖然一個交易可以看到資料在其他並行交易修改之前以及完成之後的狀態,但它看不到資料在交易中的任何狀態。

持久性(Durability)

交易可以透過幾種方式幫助提高持久性:不管發生任何事,一個成功的交易中發生的資料修改都可以視為已儲存在資料庫中。完成每個交易後,資料庫交易記錄中會加入一列。因此,如果系統故障時需要從備份中還原資料庫,則可以使用此交易記錄將資料庫恢復到交易成功後的狀態。

總結

交易是在資料庫中強制執行四個 ACID 特性的極好方法。在今天的文章中,我們了解了交易是如何做到這一點的。在下一篇文章中,我們將研究如何在預存程序中使用交易來防止資料不一致。

Navicat 文章
頻道記錄
分享
部落格封存檔