java事務相關知識彙總一
阿新 • • 發佈:2018-11-26
事務:
預設事務自動提交
觸發時機:
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