事務(wù)的四個(gè)隔離級(jí)別:
(推薦學(xué)習(xí):mysql教程)
一、Read Uncommitted -- 讀取未提交內(nèi)容
一個(gè)事務(wù)可以查看到未提交的內(nèi)容
常產(chǎn)生臟讀問題(臟讀:讀取到其他事務(wù)未提交(執(zhí)行)的內(nèi)容)
對(duì)同一數(shù)據(jù)表開啟A、B兩個(gè)事務(wù)(A、B事務(wù)交叉) start transaction
A事務(wù)只查詢數(shù)據(jù)表中內(nèi)容,B事務(wù)做增刪改操作但不commit(提交)
A事務(wù)依舊可以查詢到表中的數(shù)據(jù)改變(查詢到未提交的內(nèi)容--臟讀)
二、Read Committed -- 讀取提交內(nèi)容
一個(gè)事務(wù)只能查看已提交的內(nèi)容
常產(chǎn)生不可重復(fù)讀的問題(不可重復(fù)讀:同一事務(wù)中執(zhí)行相同的select語(yǔ)句得到不同的結(jié)果)
對(duì)同一數(shù)據(jù)表開啟A、B兩個(gè)事務(wù)(A、B事務(wù)交叉) start transaction
A事務(wù)只查詢數(shù)據(jù)表中內(nèi)容,B事務(wù)做增刪改操作但不commit(提交)
A事務(wù)查詢不到表中的數(shù)據(jù)改變的內(nèi)容
B事務(wù)提交
A查到的數(shù)據(jù)改變(A兩次查詢,產(chǎn)生不同的結(jié)果--不可重復(fù)讀)
三、Repeatable Read -- 可重讀
同一事務(wù)的多個(gè)實(shí)例并發(fā)讀取數(shù)據(jù)時(shí)得到同一結(jié)果
MySQL的默認(rèn)事務(wù)隔離級(jí)別
常產(chǎn)生幻讀問題(幻讀:多次讀取時(shí)產(chǎn)生不同結(jié)果(幻影行))
對(duì)同一數(shù)據(jù)表開啟A、B兩個(gè)事務(wù)(A、B事務(wù)交叉) start transaction
A事務(wù)只查詢數(shù)據(jù)表中內(nèi)容,B事務(wù)做增刪改操作但不commit(提交)
A事務(wù)查詢不到表中的數(shù)據(jù)改變的內(nèi)容
B事務(wù)提交
A事務(wù)查詢不到表中的數(shù)據(jù)改變的內(nèi)容
A提交
A可查詢到表中數(shù)據(jù)的改變
四、Serializable -- 可串行化
最高隔離級(jí)別
給事務(wù)加上共享鎖,同時(shí)只能有一個(gè)事務(wù)操作,解決幻讀問題
會(huì)導(dǎo)致大量超時(shí)和鎖競(jìng)爭(zhēng)問題
開啟A事務(wù)
開啟B事務(wù)時(shí)無法增刪該操作
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com