1. 程式人生 > >java事務相關知識彙總一

java事務相關知識彙總一

事務:

預設事務自動提交

觸發時機:

DML執行:資料庫操作語句的執行,例如insert,update,delete

DDL執行:資料定義語句

SELECT查詢後結果集關閉後

儲存過程執行後(資料結果集返回後,事務關閉)

 

事務隔離4大級別:

讀未提交

讀已提交

可重複讀

可序列化

 

不同隔離級別可能出現的問題

髒讀:A事務讀,B事務寫未提交,A事務能讀取B事務沒有提交的資料。

不可重複讀:A事務讀一行記錄,B事務修改這條記錄,A事務兩次讀取記錄結果不一樣。

幻讀:A事務第一次讀所有行記錄,B事務新增記錄提交,A事務會讀到新增這一行記錄。

 

注意:測試4種不能隔離級別,可能發現的問題時,一定記得把Mysql自動提交關閉

隔離級別指令:

設定:

SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]

查詢

SELECT @@TX_ISOLATION

自動提交指令:

關閉:

SET AUTOCOMMIT=1

開啟:

SET AUTOCOMMIT=0