MySQl事務隔離級別(命令及簡單理解)

 

1.查看當前會話隔離級別 java

 

select @@tx_isolation; session

 

2.查看系統當前隔離級別 併發

 

select @@global.tx_isolation; 命令行

 

3.設置當前會話隔離級別 事務

 

set session transaction isolatin level repeatable read; it

 

4.設置系統當前隔離級別 io

 

set global transaction isolation level repeatable read; table

 

5.命令行,開始事務時 select

 

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

相關文章
相關標籤/搜索