1. 程式人生 > >001----Mysql隔離級別

001----Mysql隔離級別

dir span tab 不可重復讀 產生 sql mysql隔離級別 row ora

一:事務隔離級別

mysql數據庫的隔離界別如下:

1, READ UNCOMMITTED(未提交讀)

事務中的修改,即使沒有提交,對其它事務也是可見的. 這樣會造成臟讀(Dirty Read)的問題.

2, READ COMMITTED(提交讀)

一個事務開始時,只能"看見"已經提交的事務所做的修改. 這個級別有時候也叫不可重復讀(nonrepeatable read).

3, REPEATABLE READ(可重復讀)

該級別保證了同一事務中多次讀取到的同樣記錄的結果是一致的. 但理論上,該事務級別還是無法解決另外一個幻讀的問題(Phantom Read).

幻讀: 當某個事務讀取某個範圍內的記錄時,另外一個事務又在該範圍內插入了新的記錄.當之前的事務再次讀取該範圍時,會產生幻行.(Phantom Row).

幻讀的問題理應由更高的隔離級別來解決,但mysql和其它數據不一樣,它同樣在可重復讀的隔離級別解決了這個問題.

也就是說, mysql的可重復讀的隔離級別解決了 "不可重復讀" 和 “幻讀” 2個問題. 稍後我們可以看見它是如何解決的.

而oracle數據庫,可能需要在 “SERIALIZABLE ” 事務隔離級別下才能解決 幻讀問題.

mysql默認的隔離級別也是: REPEATABLE READ(可重復讀)

4, SERIALIZABLE (可串行化)

強制事務串行執行,避免了上面說到的 臟讀,不可重復讀,幻讀 三個的問題.

001----Mysql隔離級別