<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        MySQL中隔離級(jí)別RC與RR的區(qū)別_MySQL

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 20:09:30
        文檔

        MySQL中隔離級(jí)別RC與RR的區(qū)別_MySQL

        MySQL中隔離級(jí)別RC與RR的區(qū)別_MySQL:1. 數(shù)據(jù)庫(kù)事務(wù)ACID特性 數(shù)據(jù)庫(kù)事務(wù)的4個(gè)特性: 原子性(Atomic): 事務(wù)中的多個(gè)操作,不可分割,要么都成功,要么都失敗; All or Nothing. 一致性(Consistency): 事務(wù)操作之后, 數(shù)據(jù)庫(kù)所處的狀態(tài)和業(yè)務(wù)規(guī)則是一致的; 比如a,b賬戶(hù)相互轉(zhuǎn)賬之后,總金
        推薦度:
        導(dǎo)讀MySQL中隔離級(jí)別RC與RR的區(qū)別_MySQL:1. 數(shù)據(jù)庫(kù)事務(wù)ACID特性 數(shù)據(jù)庫(kù)事務(wù)的4個(gè)特性: 原子性(Atomic): 事務(wù)中的多個(gè)操作,不可分割,要么都成功,要么都失敗; All or Nothing. 一致性(Consistency): 事務(wù)操作之后, 數(shù)據(jù)庫(kù)所處的狀態(tài)和業(yè)務(wù)規(guī)則是一致的; 比如a,b賬戶(hù)相互轉(zhuǎn)賬之后,總金

        1. 數(shù)據(jù)庫(kù)事務(wù)ACID特性

        數(shù)據(jù)庫(kù)事務(wù)的4個(gè)特性:

        原子性(Atomic): 事務(wù)中的多個(gè)操作,不可分割,要么都成功,要么都失敗; All or Nothing.

        一致性(Consistency): 事務(wù)操作之后, 數(shù)據(jù)庫(kù)所處的狀態(tài)和業(yè)務(wù)規(guī)則是一致的; 比如a,b賬戶(hù)相互轉(zhuǎn)賬之后,總金額不變;

        隔離性(Isolation): 多個(gè)事務(wù)之間就像是串行執(zhí)行一樣,不相互影響;

        持久性(Durability): 事務(wù)提交后被持久化到永久存儲(chǔ).

        2. 隔離性

        其中 隔離性 分為了四種:

        READ UNCOMMITTED:可以讀取未提交的數(shù)據(jù),未提交的數(shù)據(jù)稱(chēng)為臟數(shù)據(jù),所以又稱(chēng)臟讀。此時(shí):幻讀,不可重復(fù)讀和臟讀均允許;

        READ COMMITTED:只能讀取已經(jīng)提交的數(shù)據(jù);此時(shí):允許幻讀和不可重復(fù)讀,但不允許臟讀,所以RC隔離級(jí)別要求解決臟讀;

        REPEATABLE READ:同一個(gè)事務(wù)中多次執(zhí)行同一個(gè)select,讀取到的數(shù)據(jù)沒(méi)有發(fā)生改變;此時(shí):允許幻讀,但不允許不可重復(fù)讀和臟讀,所以RR隔離級(jí)別要求解決不可重復(fù)讀;

        SERIALIZABLE: 幻讀,不可重復(fù)讀和臟讀都不允許,所以serializable要求解決幻讀;

        3. 幾個(gè)概念

        臟讀:可以讀取未提交的數(shù)據(jù)。RC 要求解決臟讀;

        不可重復(fù)讀:同一個(gè)事務(wù)中多次執(zhí)行同一個(gè)select, 讀取到的數(shù)據(jù)發(fā)生了改變(被其它事務(wù)update并且提交);

        可重復(fù)讀:同一個(gè)事務(wù)中多次執(zhí)行同一個(gè)select, 讀取到的數(shù)據(jù)沒(méi)有發(fā)生改變(一般使用MVCC實(shí)現(xiàn));RR各級(jí)級(jí)別要求達(dá)到可重復(fù)讀的標(biāo)準(zhǔn);

        幻讀:同一個(gè)事務(wù)中多次執(zhí)行同一個(gè)select, 讀取到的數(shù)據(jù)行發(fā)生改變。也就是行數(shù)減少或者增加了(被其它事務(wù)delete/insert并且提交)。SERIALIZABLE要求解決幻讀問(wèn)題;

        這里一定要區(qū)分 不可重復(fù)讀 和 幻讀:

        不可重復(fù)讀的重點(diǎn)是修改:

        同樣的條件的select, 你讀取過(guò)的數(shù)據(jù), 再次讀取出來(lái)發(fā)現(xiàn)值不一樣了

        幻讀的重點(diǎn)在于新增或者刪除:

        同樣的條件的select, 第1次和第2次讀出來(lái)的記錄數(shù)不一樣

        從結(jié)果上來(lái)看, 兩者都是為多次讀取的結(jié)果不一致。但如果你從實(shí)現(xiàn)的角度來(lái)看, 它們的區(qū)別就比較大:

        對(duì)于前者, 在RC下只需要鎖住滿(mǎn)足條件的記錄,就可以避免被其它事務(wù)修改,也就是 select for update, select in share mode; RR隔離下使用MVCC實(shí)現(xiàn)可重復(fù)讀;

        對(duì)于后者, 要鎖住滿(mǎn)足條件的記錄及所有這些記錄之間的gap,也就是需要 gap lock。

        而ANSI SQL標(biāo)準(zhǔn)沒(méi)有從隔離程度進(jìn)行定義,而是定義了事務(wù)的隔離級(jí)別,同時(shí)定義了不同事務(wù)隔離級(jí)別解決的三大并發(fā)問(wèn)題:

        Isolation Level

        Dirty Read

        Unrepeatable Read

        Phantom Read

        Read UNCOMMITTED

        YES

        YES

        YES

        READ COMMITTED

        NO

        YES

        YES

        READ REPEATABLE

        NO

        NO

        YES

        SERIALIZABLE

        NO

        NO

        NO

        4. 數(shù)據(jù)庫(kù)的默認(rèn)隔離級(jí)別

        除了MySQL默認(rèn)采用RR隔離級(jí)別之外,其它幾大數(shù)據(jù)庫(kù)都是采用RC隔離級(jí)別。

        但是他們的實(shí)現(xiàn)也是極其不一樣的。Oracle僅僅實(shí)現(xiàn)了RC 和 SERIALIZABLE隔離級(jí)別。默認(rèn)采用RC隔離級(jí)別,解決了臟讀。但是允許不可重復(fù)讀和幻讀。其SERIALIZABLE則解決了臟讀、不可重復(fù)讀、幻讀。

        MySQL的實(shí)現(xiàn):MySQL默認(rèn)采用RR隔離級(jí)別,SQL標(biāo)準(zhǔn)是要求RR解決不可重復(fù)讀的問(wèn)題,但是因?yàn)镸ySQL采用了gap lock,所以實(shí)際上MySQL的RR隔離級(jí)別也解決了幻讀的問(wèn)題。那么MySQL的SERIALIZABLE是怎么回事呢?其實(shí)MySQL的SERIALIZABLE采用了經(jīng)典的實(shí)現(xiàn)方式,對(duì)讀和寫(xiě)都加鎖。

        5. MySQL 中RC和RR隔離級(jí)別的區(qū)別

        MySQL數(shù)據(jù)庫(kù)中默認(rèn)隔離級(jí)別為RR,但是實(shí)際情況是使用RC 和 RR隔離級(jí)別的都不少。好像淘寶、網(wǎng)易都是使用的 RC 隔離級(jí)別。那么在MySQL中 RC 和 RR有什么區(qū)別呢?我們?cè)撊绾芜x擇呢?為什么MySQL將RR作為默認(rèn)的隔離級(jí)別呢?

        5.1 RC 與 RR 在鎖方面的區(qū)別

        1> 顯然 RR 支持 gap lock(next-key lock),而RC則沒(méi)有g(shù)ap lock。因?yàn)镸ySQL的RR需要gap lock來(lái)解決幻讀問(wèn)題。而RC隔離級(jí)別則是允許存在不可重復(fù)讀和幻讀的。所以RC的并發(fā)一般要好于RR;

        2> RC 隔離級(jí)別,通過(guò) where 條件過(guò)濾之后,不符合條件的記錄上的行鎖,會(huì)釋放掉(雖然這里破壞了“兩階段加鎖原則”);但是RR隔離級(jí)別,即使不符合where條件的記錄,也不會(huì)是否行鎖和gap lock;所以從鎖方面來(lái)看,RC的并發(fā)應(yīng)該要好于RR;

        5.2 RC 與 RR 在復(fù)制方面的區(qū)別

        1> RC 隔離級(jí)別不支持 statement 格式的bin log,因?yàn)樵摳袷降膹?fù)制,會(huì)導(dǎo)致主從數(shù)據(jù)的不一致;只能使用 mixed 或者 row 格式的bin log; 這也是為什么MySQL默認(rèn)使用RR隔離級(jí)別的原因。復(fù)制時(shí),我們最好使用:binlog_format=row

        2> MySQL5.6 的早期版本,RC隔離級(jí)別是可以設(shè)置成使用statement格式的bin log,后期版本則會(huì)直接報(bào)錯(cuò);

        5.3 RC 與 RR 在一致性讀方面的區(qū)別

        簡(jiǎn)單而且,RC隔離級(jí)別時(shí),事務(wù)中的每一條select語(yǔ)句會(huì)讀取到他自己執(zhí)行時(shí)已經(jīng)提交了的記錄,也就是每一條select都有自己的一致性讀ReadView; 而RR隔離級(jí)別時(shí),事務(wù)中的一致性讀的ReadView是以第一條select語(yǔ)句的運(yùn)行時(shí),作為本事務(wù)的一致性讀snapshot的建立時(shí)間點(diǎn)的。只能讀取該時(shí)間點(diǎn)之前已經(jīng)提交的數(shù)據(jù)。

        具體可以參加:MySQL 一致性讀 深入研究

        5.4 RC 支持半一致性讀,RR不支持

        RC隔離級(jí)別下的update語(yǔ)句,使用的是半一致性讀(semi consistent);而RR隔離級(jí)別的update語(yǔ)句使用的是當(dāng)前讀;當(dāng)前讀會(huì)發(fā)生鎖的阻塞。

        1> 半一致性讀:

        A type of read operation used for UPDATE statements, that is a combination of read committed and consistent read. When an UPDATE statement examines a row that is already locked, InnoDB returns the latest committed version to MySQL so that MySQL can determine whether the row matches the WHERE condition of the UPDATE. If the row matches (must be updated), MySQL reads the row again, and this time InnoDB either locks it or waits for a lock on it. This type of read operation can only happen when the transaction has the read committed isolation level, or when the innodb_locks_unsafe_for_binlog option is enabled.

        簡(jiǎn)單來(lái)說(shuō),semi-consistent read是read committed與consistent read兩者的結(jié)合。一個(gè)update語(yǔ)句,如果讀到一行已經(jīng)加鎖的記錄,此時(shí)InnoDB返回記錄最近提交的版本,由MySQL上層判斷此版本是否滿(mǎn)足 update的where條件。若滿(mǎn)足(需要更新),則MySQL會(huì)重新發(fā)起一次讀操作,此時(shí)會(huì)讀取行的最新版本(并加鎖)。semi-consistent read只會(huì)發(fā)生在read committed隔離級(jí)別下,或者是參數(shù)innodb_locks_unsafe_for_binlog被設(shè)置為true(該參數(shù)即將被廢棄)。

        對(duì)比RR隔離級(jí)別,update語(yǔ)句會(huì)使用當(dāng)前讀,如果一行被鎖定了,那么此時(shí)會(huì)被阻塞,發(fā)生鎖等待。而不會(huì)讀取最新的提交版本,然后來(lái)判斷是否符合where條件。

        半一致性讀的優(yōu)點(diǎn):

        減少了update語(yǔ)句時(shí)行鎖的沖突;對(duì)于不滿(mǎn)足update更新條件的記錄,可以提前放鎖,減少并發(fā)沖突的概率。

        Oracle中的update好像有“重啟動(dòng)”的概念。

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQL中隔離級(jí)別RC與RR的區(qū)別_MySQL

        MySQL中隔離級(jí)別RC與RR的區(qū)別_MySQL:1. 數(shù)據(jù)庫(kù)事務(wù)ACID特性 數(shù)據(jù)庫(kù)事務(wù)的4個(gè)特性: 原子性(Atomic): 事務(wù)中的多個(gè)操作,不可分割,要么都成功,要么都失敗; All or Nothing. 一致性(Consistency): 事務(wù)操作之后, 數(shù)據(jù)庫(kù)所處的狀態(tài)和業(yè)務(wù)規(guī)則是一致的; 比如a,b賬戶(hù)相互轉(zhuǎn)賬之后,總金
        推薦度:
        標(biāo)簽: 級(jí)別 rr mysql
        • 熱門(mén)焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門(mén)推薦

        專(zhuān)題
        Top
        主站蜘蛛池模板: 久久99精品国产免费观看| 国产亚洲精彩视频| 亚洲免费精彩视频在线观看| 伊人久久大香线蕉亚洲五月天| 黄页网址大全免费观看12网站| 国产精品二区三区免费播放心| 亚洲AV无码一区二区三区性色| 精品免费久久久久久成人影院| 亚洲中文字幕无码mv| 四虎www成人影院免费观看| 国产精品无码亚洲精品2021 | 国产又黄又爽胸又大免费视频| 亚洲成A∨人片天堂网无码| 一级毛片免费不卡直观看| 亚洲精品无码久久久久sm| 久久精品免费观看| 久久久久亚洲AV无码观看| 亚洲免费福利在线视频| 亚洲AV无码专区亚洲AV桃| 亚洲国产91精品无码专区| 两个人看的www高清免费观看| 亚洲五月激情综合图片区| 成人免费淫片在线费观看| 免费的黄网站男人的天堂| 久久被窝电影亚洲爽爽爽| 57pao国产成视频免费播放| 亚洲人AV在线无码影院观看| 免费观看国产精品| 91国内免费在线视频| 久久久无码精品亚洲日韩蜜臀浪潮| 99久久免费国产精品特黄| 免费观看又污又黄在线观看| 亚洲av无码国产精品色午夜字幕| 国内精品免费麻豆网站91麻豆| 综合一区自拍亚洲综合图区| 久久精品7亚洲午夜a| 在线免费观看一级片| 在线涩涩免费观看国产精品| 亚洲综合av一区二区三区| 国产亚洲成av人片在线观看| 青春禁区视频在线观看直播免费|