數(shù)據(jù)庫事務(wù)的四種隔離級別

1.(read uncommitted)

讀到事務(wù)未提交數(shù)據(jù) : 假設(shè)用戶A與用戶B,用戶 A 開啟一個事務(wù), account + 200, A 事務(wù)還未 commit 用戶B 就可以看到 account+ 200 的結(jié)果, 這樣 在用戶B讀數(shù)據(jù)的時候,有可能讀到未提交的數(shù)據(jù),這就叫做臟讀。

2. (read committed) 大多數(shù)數(shù)據(jù)庫的默認隔離級別

只能讀到事務(wù)提交后的數(shù)據(jù): 假設(shè) 用戶 A 開啟一個事務(wù), account+ 200, 此時用戶A 的數(shù)據(jù)還未提交,B讀到的數(shù)據(jù)依舊不會改變,只有等 A 的事務(wù) commit 后,B才可以讀到 account+200 , 這樣就會出現(xiàn)B在一個事務(wù)中可能會讀到兩次不同的數(shù)據(jù)(第一次讀的時候A事務(wù)還未提交,第二次讀的時候A事務(wù)已經(jīng)提交),這種讀到兩次不同的數(shù)據(jù)也叫不可重復(fù)讀

3. (repeatable read) mysql的默認隔離級別

同一事務(wù)內(nèi)讀到的數(shù)據(jù)一致: 事務(wù)B開啟一個事務(wù),先讀一次數(shù)據(jù),然后A在其中插入一條新數(shù)據(jù),此時B再讀一次,發(fā)現(xiàn)數(shù)據(jù)并沒有發(fā)生變化,但是當(dāng)我們插入和A剛插入的數(shù)據(jù)相同的一條數(shù)據(jù)時,就會報數(shù)據(jù)已存在, (如果我們是用戶B就會感到一臉懵逼,明明看到的數(shù)據(jù)不存在,但是插入的數(shù)據(jù)已存在,我們稱這種就為幻象讀)

4. ( serializable) :

串行化:A開啟一個事務(wù),讀數(shù)據(jù),此時還未提交,B此時要往數(shù)據(jù)庫里寫數(shù)據(jù),發(fā)現(xiàn)需要等待,當(dāng)A事務(wù)提交了,B才可以成功寫入。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容