Mysql事務詳解(二)事務的隔離性和容易引起的問題

上一篇講到事務的四大特性,其中有一個是事務的隔離性,即兩個事物之間不會互相影響,爲了實現這樣的功能,就引入了事務的隔離性。

事務的隔離性

爲了保證事務的隔離性,自然我們可以把事務設計成單線程的,這樣的話效率就會極其低下,爲了保證隔離性,又不失效率我們把喪失隔離性的情況分爲三種

髒讀:讀到另一個未提交事務的數據

幻讀:在一個事務過程中已經讀取了一次表,此時恰巧另一個事務commit,導致這次事務再一次讀取表時前後不一致。(表影響)

不可重複讀:在一個事務過程中已經讀取了一次a數據,此時恰巧另一個事務commit,導致這次事務再一次讀取a數據時前後不一致。(行影響)

針對這三種情況推出了四大隔離級別

   四大隔離級別:
                Read uncommitted -- 不防止任何隔離性問題,具有髒讀/不可重複度/虛讀(幻讀)問題
                Read committed -- 可以防止髒讀問題,但是不能防止不可重複度/虛讀(幻讀)問題(mysql默認)
                Repeatable read -- 可以防止髒讀/不可重複讀問題,但是不能防止虛讀(幻讀)問題
                Serializable -- 數據庫被設計爲單線程數據庫,可以防止上述所有問題

這四大隔離級別,安全性遞增。效率遞減

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章