Mysql-Isolate-Level.md
Translated by ChatGTP
MySQL 隔離級別
尋找當前的隔離級別
5.7
select @@tx_isolation;
8.0
SELECT @@TRANSACTION_ISOLATION;
預設值
REPEATABLE-READ
交易操作
begin;
select * from test.members where id = 3;
update test.members set type = 9999 where id = 3;
rollback;
commit;
測試交易級別
set session transaction isolation level read uncommitted;
隔離級別
- read uncommitted
- 查看另一個 session 未 commit 或 rollback 時的資料更改。
- 需要在讀取資料的 session 上更改隔離級別,而非更新資料的 session 上更改。
- read committed
- 能夠讀取資料,但資料將不會更改。
- repeatable read
- 只能在交易開始時讀取資料,即使其他 session 提交更新,也不能讀取到更改的資料。
所有隔離級別均無法解決非同步資料操作問題。
- serializable
- 鎖定其他 session 資料更改,即使只選擇資料。
可以解決非同步操作問題,但可能引起大量鎖等待。