1.查看當前會話隔離級別
select @@tx_isolation;
2.查看系統當前隔離級別
select @@global.tx_isolation;
3.設置當前會話隔離級別
set session transaction isolatin level repeatable read;
4.設置系統當前隔離級別
set global transaction isolation level repeatable read;
5.命令行,開始事務時
set autocommit=off 或者 start transaction
關於隔離級別的理解
1.read uncommitted
可以看到未提交的數據(臟讀),舉個例子:別人說的話你都相信了,但是可能他只是說說,並不實際做。
2.read committed
讀取提交的數據。但是,可能多次讀取的數據結果不一致(不可重復讀,幻讀)。用讀寫的觀點就是:讀取的行數據,可以寫。
3.repeatable read(MySQL默認隔離級別)
可以重復讀取,但有幻讀。讀寫觀點:讀取的數據行不可寫,但是可以往表中新增數據。在MySQL中,其他事務新增的數據,看不到,不會產生幻讀。采用多版本並發控制(MVCC)機制解決幻讀問題。
4.serializable
可讀,不可寫。像java中的鎖,寫數據必須等待另一個事務結束。