1 臟讀: 一個事務可以讀取另一個事務未提交的數(shù)據(jù)
2 不可重復讀: 一個事務連續(xù)兩次執(zhí)行某個讀操作,返回的結(jié)果不一致,被修改了
3 虛讀 :一個事務連續(xù)兩次執(zhí)行某個讀操作,返回的結(jié)果不一致,返回的紀錄數(shù)目有改變
不可重復讀 與 虛讀 的區(qū)別:
不可重復讀,強調(diào)的是,第二次返回的結(jié)果中,某個條目被修改過,比如某些字段被修改
虛讀,強調(diào)的是,第二次返回結(jié)果中,屬于第一次返回結(jié)果的條目沒有任何變化,但是返回條目的數(shù)目會變化
數(shù)據(jù)庫事務隔離級別
1 read uncommitted 臟讀的那個級別
2 read committed 解決臟讀問題,提交了才能被其它事務讀到 (大多數(shù)數(shù)據(jù)庫的默認事務等級)
3 repeatable read 可重復讀,如何實現(xiàn):規(guī)定一個事務不能修改被其它事務讀但是未提交的事務
4 serializable 最高的事務隔離級別 如何實現(xiàn):所有的事務都串行執(zhí)行
repeatable read是如何實現(xiàn)?
規(guī)定一個事務不能修改其它事務讀但是未提交的事務
這樣就保證了一個事務中第二次讀到的數(shù)據(jù)都是沒有被修改過得
為什么repeatable read隔離級別,虛讀問題沒有被解決掉?
只對修改作了限制,如果兩次讀之間進行了插入或者刪除操作,滿足沒有修改其它事務讀但未提交的事務,結(jié)果,兩次讀的結(jié)果還是會不一致,所以虛讀問題沒有被解決
虛讀問題解決,serializable隔離級別?
串行化執(zhí)行,很容易理解,我在一個事務中,執(zhí)行兩次讀操作,在此期間,沒有其它事務在執(zhí)行,必須等我執(zhí)行完以后才會被執(zhí)行,因為是串行,大家排隊,所以結(jié)果不可能不一致。