mysql事務隔離級別與設置


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM