MySQL中有四個隔離等級
1 :read uncommitted 讀取沒提交的數據
事務a中執行的sql語句執行了,卻沒有提交數據。事務b也可以讀取到這些未提交的數據,這樣稱為臟讀
2:read committed 讀取提交的數據
事務b能讀取到事務a提交的數據,事務b還沒結束,事務b的后續SQL操作會被事務a修改的數據所影響,這樣成為不可重復讀
3:repeatable read 可以重復讀 MySQL中默認是設置為repeatable table的。
事務a已經查詢過這些數據,事務b再修改這些數據并提交到數據庫,這些修改的數據事務a是查不到的。
也就是說一個事務只能查詢一次數據,因為后面即使再次查詢,查詢的數據也不會隨著數據庫的改變而改變,但數據庫的數據改變是肯定存在的,事務卻查不到,這樣會導致幻讀
4:serializable 串行化 這個安全等級是最高的,也是最消耗資源的
一個cmd事務沒有結束(結束就是提交數據) 另一個cmd的事務不能進行寫入數據操作,這樣成為串行化
修改MySQL中的隔離等級,修改后要重啟才會起作用
set global transaction isolation level 等級

查看MySQL中的隔離等級
MySQL版本為8.x的
select @@global.transaction_isolation;
select @@transaction_isolation;
MySQL版本為5.x的
select @@ global.tx_isolation;
select @@tx_isolation;
浙公網安備 33010602011771號