數據庫事務的隔離級別

隔離級別都與問題相對應,數據庫操作常見的問題:

1 髒讀:   一個事務可以讀取另一個事務未提交的數據

2 不可重複讀: 一個事務連續兩次執行某個讀操作,返回的結果不一致,被修改了

3 虛讀 :一個事務連續兩次執行某個讀操作,返回的結果不一致,返回的紀錄數目有改變


不可重複讀 與 虛讀 的區別:

不可重複讀,強調的是,第二次返回的結果中,某個條目被修改過,比如某些字段被修改

虛讀,強調的是,第二次返回結果中,屬於第一次返回結果的條目沒有任何變化,但是返回條目的數目會變化


數據庫事務隔離級別

1 read uncommitted  髒讀的那個級別

2 read committed  解決髒讀問題,提交了才能被其它事務讀到  (大多數數據庫的默認事務等級)

3 repeatable read 可重複讀,如何實現:規定一個事務不能修改被其它事務讀但是未提交的事務

4 serializable 最高的事務隔離級別  如何實現:所有的事務都串行執行


repeatable read是如何實現?

規定一個事務不能修改其它事務讀但是未提交的事務

這樣就保證了一個事務中第二次讀到的數據都是沒有被修改過得


爲什麼repeatable read隔離級別,虛讀問題沒有被解決掉?

只對修改作了限制,如果兩次讀之間進行了插入或者刪除操作,滿足沒有修改其它事務讀但未提交的事務,結果,兩次讀的結果還是會不一致,所以虛讀問題沒有被解決


虛讀問題解決,serializable隔離級別?

串行化執行,很容易理解,我在一個事務中,執行兩次讀操作,在此期間,沒有其它事務在執行,必須等我執行完以後纔會被執行,因爲是串行,大家排隊,所以結果不可能不一致。



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