A 原子性
事務管理者多個小操作,他們同時完成或者同時不完成就是原子性
C 一致性
一致性,是一個很相對的,很主觀的概念, 一致性 描述的是 事務 從一個一致的狀態變成 另一個一致的狀態。 一致性需要 AID 的 特性來保證,但是 還和我們的邏輯相關。
一致性是數據庫事務的特性,也就是說一個事務應該具有ACID。數據庫事務保證AID。但是一致性使我們的代碼邏輯和AID一起來保證的。
比如: 張三 有100 塊錢,李四 0 元。 這時候數據是一致的(這時候的數據狀態是一致的,符合我們主觀的約定)。
操作:張三個李四轉賬 100 。
事務提交以后。 張三:0 元。 李四:100 元,這時候我們認為數據是一致的,錢的總量沒變,很主觀的意識( )
思考: 如果轉賬要扣除手續費(扣除2 快手續費)。上面的結果就不是一致狀態了。
知識后我們認為具有一致性狀態的的結果是.張三0元,李四98元。系統手續分收益加2元。所以一致性性是很主觀的概念,又我們代碼邏輯保證。
思考2:如果 沒有 AID 一致性是否可以成立
沒有A,張三減去100,李四沒加錢。(一致性被破壞)(我們主觀的認為錢總量是100,這里憑空少了了100)
沒有I ,張三 減去100 ,想給李四加 98 塊錢。但是 獨到了別人未提交的數據(讀到另一個事務吧李四的錢改成100,然后這個事務還回滾了),
給李四加98 ,這時候李四的錢變成 198 。系統手續費 加2 快。 結果詩句狀態有不一致了(我們主觀的認為錢總量是100,這里憑空多了100)。
沒有D。 正常操作完成 錢都 變成我們想要的記過。提交了,但是下一刻所有提交不見了。回復初始沒提交的樣子。雖然錢的總量還是一百,但是我們有轉賬這個操作,我們錢沒按照我們設定的情景移動,
如果只看 張三的數據,張三有轉賬成功記錄。但是錢沒變(我們的主觀意識,張三的余額應該等於張三的初始余額加上轉賬記錄。明顯不相等,初始100,轉賬記錄-100,余額應該是0 ,但是 現在余額是100 。不是數據不是我們認知的一致的狀態)。
I 隔離性 (事務的不同隔離級別隔離性不同)
兩個方面
1 事務 開啟以后不會讀到 別的事務的修改 ( 不可重復讀 )
2 事務不會讀到別的事務沒有提交的數據。(臟讀)
3 事務 開啟以后 不會讀到別的事務的 插入,和刪除 ( 幻讀 )
D 持久性
事務提交了,就寫到硬盤。不會無故丟失。