數據ACID簡介

 ACID

ACID,是指在數據庫管理系統(DBMS)中,事務(transaction)所具有的四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。

  具體舉例:

   設想網上購物的一次交易,其付款過程至少包括以下幾步數據庫操作:  

  • 更新客戶所購商品的庫存信息

  • 保存客戶付款信息--可能包括與銀行系統的交互

  • 生成訂單並且保存到數據庫中 

  • 更新用戶相關信息,例如購物數量等等  

 

 正常的情況下,這些操作將順利進行,最終交易成功,與交易相關的所有數據庫信息也成功地更新。但是,如果在這一系列過程中任何一個環節出了差錯,例如在更新商品庫存信息時發生異常、該顧客銀行帳戶存款不足等,都將導致交易失敗。一旦交易失敗,數據庫中所有信息都必須保持交易前的狀態不變,比如最後一步更新用戶信息時失敗而導致交易失敗,那麼必須保證這筆失敗的交易不影響數據庫的狀態--庫存信息沒有被更新、用戶也沒有付款,訂單也沒有生成。否則,數據庫的信息將會一片混亂而不可預測。  

    數據庫事務正是用來保證這種情況下交易的平穩性和可預測性的技術。 


然後我們再回到實際應用中,看它是怎麼工作的

 

在數據庫系統中,一個事務是指:由一系列數據庫操作組成的一個完整的邏輯過程。例如銀行轉帳,從原賬戶扣除金額,以及向目標賬戶添加金額,這兩個數據庫操作的總和,構成一個完整的邏輯過程,不可拆分。這個過程被稱爲一個事務,具有ACID特性

 

  • 原子性:一個事務(transaction)中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。

  • !一致性:在事務開始之前和事務結束以後,數據庫的完整性限制沒有被破壞。

  • 隔離性:當兩個或者多個事務併發訪問(此處訪問指查詢和修改的操作)數據庫的同一數據時所表現出的相互關係。事務隔離分爲不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重複讀(repeatable read)和串行化(Serializable)。

  • 持久性:在事務完成以後,該事務對數據庫所作的更改便持久地保存在數據庫之中,並且是完全的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章