2.【每日分享】Mysql支持的事務(wù)隔離級別

在日常開發(fā)中,尤其是業(yè)務(wù)開發(fā),少不了利用java對數(shù)據(jù)庫進(jìn)行基本的增刪改查等數(shù)據(jù)操作,這也是java工程師必備技能之一,不僅僅需要對java語言框架的理解,更需要對數(shù)據(jù)庫自身體系的理解。

問題:Mysql支持的事務(wù)隔離級別有哪些,以及悲觀鎖樂觀鎖的應(yīng)用原理和應(yīng)用場景?

事務(wù)隔離級別

所謂隔離級別,就是在數(shù)據(jù)庫事務(wù)中,為保證并發(fā)數(shù)據(jù)讀寫的正確性而提出的定義。

每種關(guān)系型數(shù)據(jù)庫都提供了各自特色的隔離級別實(shí)現(xiàn),雖然在通常的定義中是以鎖為實(shí)現(xiàn)單元,但實(shí)際實(shí)現(xiàn)千差萬別,比如MYsql的InnoDB引擎為例,按照隔離程度從低到高,依次分為四個不同的層次:

1、讀未提交,就是一個事務(wù)能夠看到其他事務(wù)尚未提交的修改,這是最低級的隔離水平,允許出現(xiàn)臟讀

2、讀已提交,事務(wù)能夠看到的數(shù)據(jù)都是其他事務(wù)已經(jīng)提交的修改,也就是保證不會看到任何中間性狀態(tài),當(dāng)然臟讀也不會出現(xiàn),讀已提交仍然是比較低級的隔離,允許其他事務(wù)并發(fā)修改數(shù)據(jù),允許不可重復(fù)讀和幻想讀出現(xiàn)。

3、可重復(fù)讀,保證一個事務(wù)中多次讀取的數(shù)據(jù)是一致的,這是Mysql InnoDB引擎的默認(rèn)隔離級別。但是和一些其他數(shù)據(jù)庫實(shí)現(xiàn)不同的是,可以簡單認(rèn)為Mysql在可重復(fù)讀級別不會出現(xiàn)幻想讀。

4、串行化,并發(fā)事物之間是串行化的,通常意味著讀取需要獲取共享讀鎖,更新需要獲取排他寫鎖。這是最高的隔離級別。

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

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