資料庫特性之原子性和一致性

2021-09-30 14:15:16 字數 561 閱讀 2070

資料庫的四大特性:原子性,一致性,隔離性和永續性。其中:

原子性:指事務包含的所有操作要麼全部成功,要麼全部失敗回滾;

一致性:指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。

我當時看見這兩個特性就感覺很奇怪,難道原子性和一致性不是一樣的嗎?提交事務,原子性保證要麼成功,要麼失敗,這樣不就是很好的保證資料庫的一致性了嗎。當時我看見大多數人舉的一致性例子就是轉賬問題:假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何轉賬,轉幾次賬,事務結束後兩個使用者的錢相加起來應該還得是5000,這就是事務的一致性。當我我就想難道原子性不就保證了轉賬成功和失敗嗎?

其實,我上述想法是錯的,但是部分錯,因為,原子性確實代表一致性的部分,但不是全部。下面是我在知乎上看到的答案左輕候,感覺可以很好的解釋原子性和一致性區別。

原子性其實並不能保證一致性的。再多個事務並行進行的情況下,即使保證每乙個事務的原子性,任然可能導致資料不一致的結果。

oracle事務一致性 原子性

事務的動作要麼一起成功,要麼都不成功,這是事務的原子性。原子性包括 語句級原子性 過程級原子性 事務級原子性 ddl與原子性 如果某條語句 如insert update 執行成功與否會自動控制事務。如設定插入前的觸發器。create table t2 cnt int insert into t2 v...

原子性 一致性 隔離性 永續性

事務是指對系統進行的一組操作,為了保證系統的完整性,事務需要具有acid特性,具體如下 1.原子性 atomic 乙個事務包含多個操作,這些操作要麼全部執行,要麼全都不執行。實現事務的原子性,要支援回滾操作,在某個操作失敗後,回滾到事務執行之前的狀態。回滾實際上是乙個比較高層抽象的概念,大多數db在...

原子性一致性隔離性永續性

事務是指對系統進行的一組操作,為了保證系統的完整性,事務需要具有acid特性,具體如下 1.原子性 atomic 乙個事務包含多個操作,這些操作要麼全部執行,要麼全都不執行。實現事務的原子性,要支援回滾操作,在某個操作失敗後,回滾到事務執行之前的狀態。回滾實際上是乙個比較高層抽象的概念,大多數db在...