數據ACID簡介
ACID
ACID,是指在數據庫管理系統(DBMS)中,事務(transaction)所具有的四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。
具體舉例:
設想網上購物的一次交易,其付款過程至少包括以下幾步數據庫操作:
更新客戶所購商品的庫存信息
保存客戶付款信息--可能包括與銀行系統的交互
生成訂單並且保存到數據庫中
更新用戶相關信息,例如購物數量等等
正常的情況下,這些操作將順利進行,最終交易成功,與交易相關的所有數據庫信息也成功地更新。但是,如果在這一系列過程中任何一個環節出了差錯,例如在更新商品庫存信息時發生異常、該顧客銀行帳戶存款不足等,都將導致交易失敗。一旦交易失敗,數據庫中所有信息都必須保持交易前的狀態不變,比如最後一步更新用戶信息時失敗而導致交易失敗,那麽必須保證這筆失敗的交易不影響數據庫的狀態
數據庫事務正是用來保證這種情況下交易的平穩性和可預測性的技術。
然後我們再回到實際應用中,看它是怎麽工作的
在數據庫系統中,一個事務是指:由一系列數據庫操作組成的一個完整的邏輯過程。例如銀行轉帳,從原賬戶扣除金額,以及向目標賬戶添加金額,這兩個數據庫操作的總和,構成一個完整的邏輯過程,不可拆分。這個過程被稱為一個事務,具有ACID特性。
原子性:一個事務(transaction)中的所有操作,要麽全部完成,要麽全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
!一致性:在事務開始之前和事務結束以後,數據庫的完整性限制沒有被破壞。
隔離性:當兩個或者多個事務並發訪問(此處訪問指查詢和修改的操作)數據庫的同一數據時所表現出的相互關系。事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)。
持久性:在事務完成以後,該事務對數據庫所作的更改便持久地保存在數據庫之中,並且是完全的。
本文出自 “12325803” 博客,請務必保留此出處http://12335803.blog.51cto.com/12325803/1941645
數據ACID簡介