查詢mysql事務隔離級別[zhuan]
阿新 • • 發佈:2019-01-09
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中的鎖,寫資料必須等待另一個事務結束。
關於隔離級別的理解參考了andyhu1007的文章:http://www.iteye.com/topic/322382