1. 程式人生 > >資料庫事務隔離級別,ACID,spring事務傳播性

資料庫事務隔離級別,ACID,spring事務傳播性

ACID,是指在資料庫管理系統DBMS)中事務所具有的四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、永續性(Durability)。

在資料庫系統中,一個事務是指由一系列資料庫操作組成的一個完整的邏輯過程。例如銀行轉帳,從原賬戶扣除金額,以及向目標賬戶新增金額,這兩個資料庫操作的總和構成一個完整的邏輯過程,不可拆分。這個過程被稱為一個事務,具有ACID特性。

原子性:

整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。

比如說,一個事務開始更新100行記錄,但是在更新了20行之後(因為某種原因)失敗了,那麼此時資料庫會回滾(撤銷)對那20條記錄的修改。

一致性:

在事務開始之前和事務結束以後,資料庫的完整性約束沒有被破壞。

事務將資料庫從一個一致性狀態帶入另一個一致性狀態。 比如說,在一個銀行事務(在描述關係資料庫事務的特性時,基本上都是用銀行事務來作為描述物件的)中,需要從儲存賬戶扣除款項,然後在支付賬戶中增加款項。 如果在這個中轉的過程發生了失敗,那麼絕對不能讓資料庫只執行其中一個賬戶的操作,因為這樣會導致資料處於不一致的狀態(這樣的話,銀行的賬目上,借貸就不平衡了)。

如果資料庫系統執行中發生故障,有些事物尚未完成就被迫中斷了,系統就將此事務中對資料庫的所有已經完成的操作全部撤銷,滾回到事務開始時的一致狀態。

隔離性:

兩個事務的執行是互不干擾的,一個事務不可能看到其他事務執行時,中間某一時刻的資料。

這個特性是說,直到事務結束時(commit/rollback),其他事務(或者會話)對此事務所操作的資料都不可見(但並不是說其他會話的讀取會被阻塞)。 比如說,一個使用者正在修改hr.employees表,但是沒有提交,那麼其他使用者在這個修改沒有提交之前是看不到這個修改的。

永續性:

在事務完成以後,該事務所對資料庫所作的更改便持久的儲存在資料庫之中,並不會被回滾。

指的是隻要事務成功結束,它對資料庫所做的更新就必須永久儲存下來。即使發生系統崩潰,重新啟動資料庫系統後,資料庫還能恢復到事務成功結束時的狀態。

被提交的更改會永久地儲存到資料庫中(並不是說以後就不可以修改)。 事務提交之後,資料庫必須通過“恢復機制”來確保事務更改的資料不會丟失。

事務ACID特性可能遭到破壞的因素有:

1.多個事務並行執行時,不同事物的操作交叉執行;

2.事務在執行過程中被強行停止。

事務的狀態有如下幾種:

1.中止事務:執行中發生故障,不能執行完成的事務;

2.事務回滾:將中止事務對資料庫的更新撤銷掉;

3.已提交事務:成功執行完成的事務。