MySQL InnoDB 存儲引擎的默認支持的隔離級別是 REPEATABLE-READ(可重讀)览露。
命令SELECT @@transaction_isolation;
查看數(shù)據庫隔離級別荧琼。
image.png
InnoDB可以通過應用加鎖讀(例如 select * from table for update
語句)來保證不會產生幻讀,而這個加鎖度使用到的機制就是 Next-Key Lock 鎖算法。從而達到了 SQL 標準的 SERIALIZABLE(可串行化) 隔離級別命锄。
如何顯示的開啟事務:
START TARNSACTION
|BEGIN
顯示開啟一個事務
COMMIT
提交事務
ROLLBACK
回滾堰乔,撤銷為提交的操作
READ-UNCOMMITTED(讀取未提交):
設置數(shù)據庫事務的隔離級別為read uncommited
image.png
image.png
READ-COMMITTED(讀取已提交):
設置數(shù)據庫隔離級別:
image.png
這樣就會發(fā)生不可重復的問題,即在同一個事務里讀取到的數(shù)據不一樣
REPEATABLE-READ(可重復讀):
設置數(shù)據庫隔離級別
image.png
image.png