mysql數據庫,當且僅當引擎是InnoDB,才支持事務;
1、隔離級別
事務的隔離級別分為:未提交讀(read uncommitted)、已提交讀(read committed)、可重復讀(repeatable read)、串行化(serializable)。
未提交讀
A事務已執行,但未提交;B事務查詢到A事務的更新后數據;A事務回滾;---出現臟數據
已提交讀
A事務執行更新;B事務查詢;A事務又執行更新;B事務再次查詢時,前后兩次數據不一致;---不可重復讀
可重復讀
A事務無論執行多少次,只要不提交,B事務查詢值都不變;B事務僅查詢B事務開始時那一瞬間的數據快照;
串行化
不允許讀寫並發操作,寫執行時,讀必須等待;
2、數據庫設置
//查看當前事物級別: SELECT @@tx_isolation;
//設置mysql的隔離級別: set session transaction isolation level 設置事務隔離級別
//設置read uncommitted級別: set session transaction isolation level read uncommitted; //設置read committed級別: set session transaction isolation level read committed; //設置repeatable read級別: set session transaction isolation level repeatable read; //設置serializable級別: set session transaction isolation level serializable;
3、Mysql 8.0+ 查詢數據庫事務隔離級別
根據慕課網課程中的方法,查詢事務隔離級別使用:
select @@tx_isolation;
我在sequal pro中,卻提示錯誤:Unknown system variable 'tx_isolation'
查詢了官方文檔,在8.0+就已經拋棄了這樣的查詢方法,https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html
在MySQL 8.0.3 中,該變量已經被 transaction_isolation 替換了。
最新的查詢方法有多種,下面提供2種:
1、select @@transaction_isolation;
2、show variables like 'transaction_isolation';
原文出處:
奇天異下, mysql事務隔離級別與設置, https://www.cnblogs.com/huasky/p/11190086.html
LXMAJS, Mysql 8.0+ 查詢數據庫事務隔離級別, https://www.cnblogs.com/lxmajs/p/10277901.html