事務:數據庫應用中完成單一邏輯功能的操作集合,是一個既具有原子性又具有一致性的功能,我們要求事務不違反任何數據庫的一致性約束,也就是說,如果事務啟動時數據是一致的,那么當這個事務成功結束的時候數據庫也應該是一致的
關於數據庫的一致性這里分享一下我的理解:一致性就是數據庫的數據狀態符合數據庫所描述的業務邏輯和規則。比如最簡單的一條一致性規則,銀行賬戶存款余額不能是負值。
適當定義不同事務是程序員的責任,事務的定義應使之能保持數據的一致性。例如資金從賬戶A轉到B可以被定義成兩個單獨的程序完成,這兩個程序依次執行可以保持一致性,但是這兩個程序自身都不是把數據庫從一個一致的狀態轉到一個新的一致狀態,所以它們都不是事務
但是,在事務執行過程中,必要時允許暫時的不一致性,因為無論是A的取出操作在前還是B的存入操作在前,這兩個操作必然有一個先后順序,兩個操作之間就會產生不一致。這種暫時的不一致雖然是必須的,但是在故障發生的時候,很可能導致問題的發生,於是這個時候我們的原子性就發揮作用了。
原子性:事務的所有操作在數據庫中要么全部正確反映,要么全部不反映。所以伴隨而來的就是事務管理器對各種故障的處理能力,其部分功能就是保證了事務的原子性。
原子性消除了事務在執行期間不可避免的不一致狀態對事務執行前后的數據庫狀態的影響。
於是乎,在原子性和一致性的雙重作用之下,事務就能夠正確、有效地執行,實現響應的邏輯功能。
所以說原子性和一致性是有區別的,但是兩者又是互補的,不能隔離開來。
