1. 程式人生 > >查詢mysql事務隔離級別[zhuan]

查詢mysql事務隔離級別[zhuan]

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