數據庫事務的四大特性(ACID)


ACID,指數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個支持事務(Transaction)的數據庫,必需要具有這四種特性,否則在事務過程(Transaction processing)當中無法保證數據的正確性,交易過程極可能達不到交易方的要求。
⑴ 原子性(Atomicity)

第一個原子性,這個是最簡單的。說的是一個事物內所有操作共同組成一個原子包,要么全部成功,要么全部失敗。這是最基本的特性,保證了因為一些其他因素導致數據庫異常,或者宕機。
⑵ 一致性(Consistency)

第二一致性,這個是大家誤解最深的,很多博客都喜歡用銀行轉賬的例子來講一直性,所謂的一致性是基於原子性。

原子性只保證了一個事物內的所有操作同一性,大家同生死,不會出現你死了,我還活着。但是,原子性並沒有保證大家同一時刻一起生,一起死。計算機指令是有先后順序的,這樣就決定了一個事物的提交,會經歷一個時間過程,那么如果事物提交進行到了一半,我讀取了數據庫,會不會讀到中間結果?

為了防止這樣的情況,數據庫事物的一致性就規定了事物提交前后,永遠只可能存在事物提交前的狀態和事物提交后的狀態,從一個一致性的狀態到另一個一致性狀態,而不可能出現中間的過程態。也就是說事物的執行結果是量子化狀態,而不是線性狀態。

數據庫提交事物會有一個過程,如果提交的時候,存在一個時間差,在提交的第一秒,一個刪除過程還沒完成到了第三秒才完成,會不會第一秒訪問的人和第三秒訪問的人得到不同的結果?出現不一致,狀態的混沌?這就是一致性得保證的只會有前狀態和后狀態,絕不會出現中間態。
⑶ 隔離性(Isolation)

事物的隔離性,基於原子性和一致性,因為事物是原子化,量子化的,所以,事物可以有多個原子包的形式並發執行,但是,每個事物互不干擾。

但是,由於多個事物可能操作同一個資源,不同的事物為了保證隔離性,會有很多鎖方案,當然這是數據庫的實現,他們怎么實現的,我們不必深究。
⑷ 持久性(Durability)

持久性,當一個事物提交之后,數據庫狀態永遠的發生了改變,這個事物只要提交了,哪怕提交后宕機,他也確確實實的提交了,不會出現因為

剛剛宕機了而讓提交不生效,是要事物提交,他就像洗不掉的紋身,永遠的固化了,除非你毀了硬盤。

作者:程序員文集
鏈接:https://www.jianshu.com/p/2a77146e70b4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM