黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Spring事務(wù)隔離級(jí)別詳解

Spring事務(wù)隔離級(jí)別詳解

更新時(shí)間:2021-09-10 10:28:48 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1712次

當(dāng)兩個(gè)事務(wù)對(duì)同一個(gè)數(shù)據(jù)庫(kù)的記錄進(jìn)行操作時(shí),那么,他們之間的影響是怎么樣的呢?這就出現(xiàn)了事務(wù)隔離級(jí)別的概念。數(shù)據(jù)庫(kù)的隔離性與并發(fā)控制有很大關(guān)系。數(shù)據(jù)庫(kù)的隔離級(jí)別是數(shù)據(jù)庫(kù)的事務(wù)特性ACID的一部分,ACID,即原子性(atomicity)、一致性(consistency)、隔離性(isolation)和持久性(durability)。

Spring的事務(wù)隔離級(jí)別有四個(gè):READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE,還有一個(gè),是數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別DEFAULT,MySQL默認(rèn)是REPEATABLE_READ。

1.READ_UNCOMMITTED

READ_UNCOMMITTED:一個(gè)事務(wù)可以讀取到另一個(gè)事務(wù)未提交的事務(wù)記錄。

換句話說(shuō),a transaction can read the data that is still uncommitted by other transactions。這是Spring事務(wù)最弱的隔離級(jí)別。見(jiàn)下面的圖,事務(wù)A開(kāi)啟,寫(xiě)入一條記錄,這時(shí)候,事務(wù)B讀入數(shù)據(jù),讀到了這條記錄,但是,之后事務(wù)A回滾。因此,事務(wù)B讀到的數(shù)據(jù)不是有效的(the database is in an invalid state)。這種情況稱(chēng)為臟讀(dirty read)。除了臟讀的問(wèn)題,READ_UNCOMMITTED還可能出現(xiàn)non-repeatable read(不可重復(fù)讀)和phantom read(幻讀)的問(wèn)題。

2.READ_COMMITTED

READ_COMMITTED:一個(gè)事務(wù)只能讀取到已經(jīng)提交的記錄,不能讀取到未提交的記錄。

換句話說(shuō),a transaction can only read the committed data, and it can’t read the uncommitted data.因此,dirty read的情況不再發(fā)生,但可能會(huì)出現(xiàn)其他問(wèn)題。見(jiàn)下圖。

在事務(wù)A兩次讀取的過(guò)程之間,事務(wù)B修改了那條記錄并進(jìn)行提交。因此,事務(wù)A前后兩次讀取的記錄不一致。這個(gè)問(wèn)題稱(chēng)為non-repeatable read(不可重復(fù)讀)。(兩次讀取的記錄不一致,重復(fù)讀取就會(huì)發(fā)現(xiàn)問(wèn)題。)

除了non-repeatable read的問(wèn)題,READ_COMMITTED還可能發(fā)生phantom read的問(wèn)題。

3.REPEATABLE_READ

REPEATABLE_READ意思是,一個(gè)事務(wù)可以多次從數(shù)據(jù)庫(kù)讀取某條記錄,而且多次讀取的那條記錄都是一致的,相同的。這個(gè)隔離級(jí)別可以避免dirty read和non-repeatable read的問(wèn)題,但可能發(fā)生phantom read的問(wèn)題。如下圖。

事務(wù)A兩次從數(shù)據(jù)庫(kù)讀取一系列記錄,期間,事務(wù)B插入了某條記錄并提交。事務(wù)A第二次讀取時(shí),會(huì)讀取到事務(wù)B剛剛插入的那條記錄。在事務(wù)期間,事務(wù)A兩次讀取的一系列記錄不一致,這個(gè)問(wèn)題稱(chēng)為phantom read。

4.SERIALIZABLE

SERIALIZABLE是Spring最強(qiáng)的隔離級(jí)別。事務(wù)執(zhí)行時(shí),會(huì)在所有級(jí)別上加鎖,比如read和write時(shí)都會(huì)加鎖,仿佛事務(wù)是以串行的方式進(jìn)行的,而不是一起發(fā)生的。這會(huì)防止dirty read、non-repeatable read和phantom read的出現(xiàn),但是,會(huì)帶來(lái)性能的下降。

5.DEFAULT

MySQL默認(rèn)是REPEATABLE_READ。

這里解釋下上面提到的幾種異常:

(1)臟讀:讀到了其他事務(wù)還沒(méi)有提交的數(shù)據(jù)。

(2)不可重復(fù)讀:對(duì)某數(shù)據(jù)進(jìn)行讀取,發(fā)現(xiàn)兩次讀取的結(jié)果不同,也就是說(shuō)沒(méi)有讀到相同的內(nèi)容。這是因?yàn)橛衅渌聞?wù)對(duì)這個(gè)數(shù)據(jù)同時(shí)進(jìn)行了修改或刪除。

(3)幻讀:事務(wù) A 根據(jù)條件查詢(xún)得到了 N 條數(shù)據(jù),但此時(shí)事務(wù) B 更改或者增加了 M 條符合事務(wù) A 查詢(xún)條件的數(shù)據(jù),這樣當(dāng)事務(wù) A 再次進(jìn)行查詢(xún)的時(shí)候發(fā)現(xiàn)會(huì)有 N+M 條數(shù)據(jù),產(chǎn)生了幻讀。

以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Spring事務(wù)隔離級(jí)別詳解",希望對(duì)大家有幫助,想了解更多可查看Spring框架教程。動(dòng)力節(jié)點(diǎn)在線學(xué)習(xí)教程,針對(duì)沒(méi)有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門(mén)到精通,主要介紹了一些Java基礎(chǔ)的核心知識(shí),讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产欧美视频一区二区三区 | 午夜网站在线播放 | 一个人看的www免费视频 | 91精品国产人成网站 | 久久综合九色综合97伊人麻豆 | 日日操夜夜骑 | 精品久久久久久国产 | 波多野结衣一区二区三区88 | 日韩一级黄色片 | 成人满18在线观看网站免费 | 成熟女人免费一级毛片 | 日韩欧美h | 欧美性精品hd在线观看 | 国产乱人伦偷精品视频不卡 | 日本欧美黄色 | 国产中文欧美 | 国产自在线拍 | 精品视频一区二区三区在线播放 | 久久综合婷婷香五月 | 香港aa三级久久三级不卡 | 国产欧美亚洲精品 | 欧美一区二区三区激情视频 | 亚洲欧美国产精品久久久 | 亚洲精彩视频在线观看 | 黄色三级在线 | 日韩精品免费一区二区三区 | 欧美一级免费 | 97影院理伦在线观看 | 日韩区在线观看 | 亚洲va | 国产精品一卡二卡三卡 | 又爽又黄又无遮挡的视频在线观看 | 久久91精品国产91久 | 成人免费视频网站www | 免费日韩网站 | 黑人巨大videos极度另类 | 一级乱理中文字幕韩国 | 任你躁欧美一级在线精品 | 成人你懂的 | 国产成人短视频 | 欧美福利视频导航 |