【以轉賬為例】
事務是指滿足acid的一組操作,可以通過commit提交乙個事務,也可以使用rollback進行回滾。
1.原子性(atomicity)
事務被視為不可分割的最小單元,事務的所有操作要麼全部提交成功,要麼全部失敗回滾。
2.一致性(consisitency)
資料庫在事務執行前後都保持一致性狀態。即轉賬前後,兩個人賬戶總金額不變。
3.隔離性(isolation)
根據隔離級別,乙個事物所作的修改對於其他事務來說是不確定的。
4.永續性(durability)
一旦事務提交,則其所作的修改將會永遠儲存到資料庫中。
mysql預設的隔離級別是可重複讀。
下面的**所執行的兩個事務需要在兩個不同的session中執行,開啟兩個客戶端。
讀未提交:事務中的修改,即使沒有提交,對其他事務也是可見的。
事務1:
1set session transaction
isolation
level
read
uncommitted;2
3 start transaction;4
update
user
setmoney
=money
-100
where id =1;
5update
user
setmoney
=money
+100
where id =2;
6commit;
事務2:
1set session transaction
isolation
level
read
uncommitted;2
3 start transaction;4
select
*from
user;5
commit;
同時開啟事務1、事務2。事務2執行到第4行檢視兩人賬戶餘額都為100,當事務1執行到第4行,事務2再執行第4行查詢操作,可以看到id為1的人賬戶餘額少了100,由此可見事務2在執行過程中可以檢視到事務1執行但尚未提交的sql。
讀已提交:
事務1:正在執行中的事務可以讀取到其他已提交事務所做的修改。
1set session transaction
isolation
level
read
committed;2
3 start transaction;4
update
user
setmoney
=money
-100
where id =1;
5update
user
setmoney
=money
+100
where id =2;
6commit;
事務2:
1set session transaction
isolation
level
read
committed;2
3 start transaction;4
select
*from
user;5
commit;
同時開啟事務1、事務2。事務2執行到第4行檢視兩人賬戶餘額都為100,當事務1執行到第4行,事務2再執行第4行查詢操作,可以看到兩人賬戶中的餘額沒有改變,由此可見事務2在執行過程中不能檢視到事務1執行但尚未提交的sql,即只能讀已經提交的事務。
可重複度:保證在同一事務中多次讀取同樣資料的結果是一樣的,即正在執行中的事務不能讀取到其他已提交事務所做的修改。
事務1:
1set session transaction
isolation
level
repeatable
read;2
3 start transaction;4
update
user
setmoney
=money
-100
where id =1;
5update
user
setmoney
=money
+100
where id =2;
6commit;
事務2:
1set session transaction
isolation
level
repeatable
read;2
3 start transaction;4
select
*from
user;5
commit;
同時開啟事務1、事務2。事務2執行到第4行檢視兩人賬戶餘額都為100,當事務1執行到第4行,事務2再執行第4行查詢操作,可以看到兩人賬戶中的餘額沒有改變,繼續執行完事務1,事務1已經提交,此時執行事務2的第4行,發現兩人賬戶中的餘額依然分別為100,但在事務1的客戶端中查詢發現轉賬已經完成,此時我們提交事務2,然後在事務2的客戶端中再次執行查詢,此時發現已經轉賬完成。由此可見事務2在執行過程中不能檢視到事務1執行且已經提交的sql,即在事務1過程中,可以重複讀取到相同且為改變的值。
序列化:強制事務序列執行。
資料庫事務 四大特性 隔離級別
以下引用自 原子性 atomicity 乙個事務要麼全部執行,要麼不執行 一致性 consistency 事務的執行並不改變資料庫中資料的一致性。例如,完整性約束了a b 10,乙個事務改變了a,那麼b也隨之改變 拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何...
資料庫事務四大特性 隔離級別
要熟悉事務之前我們先了解一下sql 概念 事務就是一組dml語句組成,這些語句在邏輯上存在關聯性,有要麼全部成功,要麼全部失敗。1 原子性 乙個事務是乙個不可分割的整體,為了保證事務的總體目標,事務必須具有原子性,即當資料修改時,要麼全部執行,要麼全部不執行。即,不允許事務部分的完成,避免了只執行這...
資料庫事務四大特性和事務隔離級別
資料庫的事務的四大特性 acid 原子性 atomicity 原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾。一致性 consistency 一致性是指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。舉個例子,事務開始前,a...