原子性:強調事務的不可分割
一致性:強調的是事務的執行的前後,資料的完整性要保持一致
隔離性:乙個事務的執行不應該受到其他事務的干擾
永續性:事務一旦結束(提交/回滾)資料就持久保持到了資料庫
讀問題髒讀:乙個事務讀到另乙個事務還沒有提交的資料
不可重複讀:乙個事務讀到了另乙個事務已經提交的update資料,導致在當前的事務中多次查詢資料不一致
虛讀/幻讀:乙個事務讀到另乙個事務已經insert資料,導致當前事務中多次查詢結果不一致
寫問題引發兩類丟失更新
設定事務的隔離級別
read uncommitted :未提交讀。髒讀,不可重複讀,虛讀都可能發生
read committed :已提交讀。避免髒讀,不可重複讀和虛度有可能發生
repeatable read :可重複讀。避免髒讀和不可重複讀,虛讀可能發生
serializable :序列化的。避免髒讀,不可重複讀,虛讀的發生
select @@tx_isolation; 檢視隔離級別演示髒讀set session transaction isolation level 級別; 設定隔離級別
1.分別開啟兩個dos視窗 a.b
2.先檢視兩個視窗的隔離級別 select @@tx_isolation;
3.設定a視窗的隔離級別為未提交讀
set session transaction isolation level read uncommitted;4.分別在兩個視窗開啟事務
start transaction;5.分別開啟兩個dos視窗 a.b
update account set money = money - 1000 where name = '張森';6.在a視窗查詢資料update account set money = money + 1000 where name = '鳳姐';
select * from account; -- a事務讀到了b事務還沒有提交的資料;演示避免髒讀,演示不可重複讀傳送
1.分別開兩個視窗,a.b
2.設定a視窗的隔離級別:read committed
set session transaction isolation level read committed;3.分別在兩個視窗開啟事務 start transaction;
4.在b視窗完成轉賬
update account set money = money - 1000 where name = '張森';5.在a視窗進行查詢update account set money = money + 1000 where name = '鳳姐';
select * from account; -- 避免髒讀6.在b視窗提交事務
commit;7.在a視窗中再次查詢
select * from account; 轉賬成功.(不可重複讀:乙個事務讀到另乙個事務中已經提交的update的資料,導致多次查詢結果不一致.)避免髒讀和不可重複讀,演示虛讀
1.分別開啟兩個視窗,a.b
2.設定a視窗的隔離級別:
repeatable read
set session transaction isolation level repeatable read;3.分別在兩個視窗中開啟事務
start transaction;4.在b視窗完成轉賬的操作
update account set money = money - 1000 where name = '張森';5.在a視窗查詢update account set money = money + 1000 where name = '鳳姐';
select * from account; -- 轉賬沒有成功:避免髒讀.6.在b視窗提交事務
commit;7.在a視窗再次查詢
select * from account; -- 轉賬沒有成功:避免不可重複讀.避免虛讀
1.分別開啟兩個視窗,a.b
2.設定a視窗的隔離級別:repeatable read
set session transaction isolation level repeatable read;3.分別在兩個視窗中開啟事務
start transaction;4.在b視窗完成插入操作
insert into account values (null,'王老師',10000)5.在a中進行查詢操作
select * from account; -- 沒有查詢到任何結果6.在b視窗提交事務
commit; -- a視窗馬上就會顯示資料
你了解spring事務的傳播特性和隔離級別嗎
這塊了解一些,首先spring一共定義了七種事務傳播屬性 1.propagation required 支援當前事務,如果當前沒有事務,就新建乙個事務。這是最常見的選擇 2.propagation supports 支援當前事務,如果當前沒有事務,就以非事務方式執行 3.propagation ma...
Spring事物特性 隔離級別和傳播行為
原子性 atomicity 強調事務的不可分割.一致性 consistency 事務的執行的前後資料的完整性保持一致.隔離性 isolation 乙個事務執行的過程中,不應該受到其他事務的干擾 永續性 durability 事務一旦結束,資料就持久到資料庫 髒讀 a事物讀取到b事物未提交的資料,b事...
你必須了解Spring的生態
spring不止是提供了ioc aop的功能,還提供了大量的基於spring的專案,拿來用就行了,用於一站式開發,大大降低了開發的難度。下面列舉下主要的一些spring的生態專案 spring boot 一站式快速開發解決專案。spring cloud 提供對分布式系統的支援。spring data...