成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Innodb RR隔離級(jí)別下到底能否避免幻讀

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
這篇文章營(yíng)養(yǎng)價(jià)值不高,主要是用來糾正大家一些觀念,有時(shí)候八股文盲目去背沒有細(xì)細(xì)思考,可能就會(huì)導(dǎo)致認(rèn)知上的錯(cuò)誤。最后總結(jié)一下,在RR隔離級(jí)別下只要不出現(xiàn)快照讀和當(dāng)前讀的切換,其實(shí)就能保證不會(huì)出現(xiàn)幻讀。

[[419546]]

背景

這個(gè)事情要回溯到曾經(jīng)背八股文的時(shí)候了,想必大家在背八股文的時(shí)候?qū)τ谑聞?wù)隔離級(jí)別都已經(jīng)背得滾瓜爛熟了,一般在說隔離級(jí)別的時(shí)候,都順帶會(huì)提到mysql的innodb的RR隔離級(jí)別,由于他與眾不同的實(shí)現(xiàn)方式,通常會(huì)有下面的一些描述:

在我的腦海里面一直就記著,mysql的Innodb在RR隔離級(jí)別下就能避免幻讀(曾經(jīng)面試的時(shí)候也這樣回答過),但是直到有一天群里的同學(xué)拋出了一個(gè)問題,

我的第一反應(yīng)也是

怎么定義幻讀?

其實(shí)對(duì)于這個(gè)爭(zhēng)論,很多點(diǎn)在于什么才叫做幻讀?先來一個(gè)幻讀的通俗的定義,對(duì)于相同的區(qū)間查詢,插入和刪除操作使得對(duì)相同的區(qū)間查詢操作返回不同的結(jié)果。

在Innodb的RR隔離級(jí)別下,比如我們對(duì)一個(gè)表進(jìn)行(id>1 and i < 100)的刪除操作,另外一個(gè)事務(wù)這個(gè)時(shí)候插入一條id=50的數(shù)據(jù),如果插入成功的話就會(huì)導(dǎo)致我們第一個(gè)事務(wù)出現(xiàn)幻覺,所以在inndodb中使用了next-key lock算法,也就是加了間隙鎖,從而阻止插入意向鎖。

接下來我們?cè)倏匆幌翸ySQL官方定義的幻讀:

翻譯過來其實(shí)就是:當(dāng)同一個(gè)查詢?cè)诓煌臅r(shí)間產(chǎn)生不同的集合時(shí),就會(huì)發(fā)生所謂的幻讀問題。例如,如果一個(gè)SELECT執(zhí)行了兩次,但是第二次返回了第一次沒有返回的行,那么該行就是一個(gè)“幻像”行。

這個(gè)定義和我們開始那個(gè)定義有什么區(qū)別嗎?看起來區(qū)別不大,但是細(xì)細(xì)的品味第一個(gè)定義限制了插入和刪除。在MYSQL的官方定義下,用了兩次查詢,并沒有定義另外一個(gè)事務(wù)做了什么,以及兩次查詢之間發(fā)生了什么,所以出現(xiàn)了這樣的一個(gè)情況:

上面有兩個(gè)事務(wù),事務(wù)B發(fā)生了幻讀的現(xiàn)象,為什么說這里是幻讀的現(xiàn)象呢?因?yàn)榘凑誐ySQL的定義兩次查詢返回不同集合,事務(wù)B的確是發(fā)生了幻讀現(xiàn)象。

為什么會(huì)出現(xiàn)這個(gè)情況呢?這個(gè)主要還是因?yàn)樵趇nnodb下所有的讀都是快照讀,如果我們?cè)谑聞?wù)中對(duì)這個(gè)數(shù)據(jù)加鎖,那么就變成了當(dāng)前讀,所以就能讀取到事務(wù)A寫的數(shù)據(jù)了。這種情況在一些文獻(xiàn)中也被叫做: write skew style phantom。

RR級(jí)別如何解決幻讀?

其實(shí)我們細(xì)細(xì)分析,我們上面那個(gè)情況是怎么解決的幻讀,是依靠next-key lock,而我們第二個(gè)案例雖然在事務(wù)中但是卻沒有使用next-key lock,如果我們真的對(duì)幻讀有很多要求的話,那么我們?cè)诓樵兊臅r(shí)候直接加上select ... for update 加上鎖,這樣可以直接讓我們走當(dāng)前讀,從而避免幻讀的出現(xiàn)。

最后 

這篇文章營(yíng)養(yǎng)價(jià)值不高,主要是用來糾正大家一些觀念,有時(shí)候八股文盲目去背沒有細(xì)細(xì)思考,可能就會(huì)導(dǎo)致認(rèn)知上的錯(cuò)誤。最后總結(jié)一下,在RR隔離級(jí)別下只要不出現(xiàn)快照讀和當(dāng)前讀的切換,其實(shí)就能保證不會(huì)出現(xiàn)幻讀。

 

責(zé)任編輯:武曉燕 來源: 咖啡拿鐵
相關(guān)推薦

2023-08-09 17:22:30

MVCCMySQL數(shù)據(jù)

2024-04-25 08:16:06

InnodbReadMVCC

2021-10-08 07:53:01

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

2021-07-26 10:28:13

MySQL事務(wù)隔離

2022-12-27 10:02:38

MVCC機(jī)制Innodb

2023-12-27 18:16:39

MVCC隔離級(jí)別幻讀

2024-05-13 11:46:33

MySQL數(shù)據(jù)庫(kù)

2022-09-08 13:56:49

MySQL事務(wù)記錄鎖

2024-03-11 00:00:00

mysqlInnoDB幻讀

2023-11-01 14:13:00

MySQL事務(wù)隔離級(jí)別

2024-04-23 08:17:14

MySQL數(shù)據(jù)庫(kù)隔離

2022-09-21 09:00:10

MySQL幻讀隔離級(jí)別

2019-05-28 13:50:27

MySQL幻讀數(shù)據(jù)庫(kù)

2022-02-17 21:13:08

MySQL架構(gòu)體系

2024-04-24 08:26:35

事務(wù)數(shù)據(jù)InnoDB

2022-06-29 11:01:05

MySQL事務(wù)隔離級(jí)別

2010-09-30 16:41:36

DB2隔離級(jí)別

2022-10-26 07:39:36

MVCC數(shù)據(jù)庫(kù)RR

2024-05-06 00:00:00

InnoDBView隔離

2010-09-30 16:35:34

DB2隔離級(jí)別
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 91精品久久久久久久久 | 一级日批片 | 日韩一二区 | www.日韩| 亚洲九色 | 欧美一区二区三区四区视频 | 国产成人麻豆免费观看 | 欧美日日日日bbbbb视频 | 91大神新作在线观看 | 久久久性色精品国产免费观看 | 手机日韩 | 国产精品久久久久久久久久妞妞 | 天天看天天爽 | 久久精品中文字幕 | 99精品欧美一区二区蜜桃免费 | 高清黄色毛片 | 国产成人精品一区二 | 精品一区二区三区在线观看国产 | 午夜成人在线视频 | 激情av网站| 国产精品久久久久久久久久久久冷 | 91久久综合 | 亚洲91视频| 干干干操操操 | 在线看av网址 | 国内精品视频一区二区三区 | 欧美日韩黄色一级片 | 日韩中文字幕一区 | 亚洲一区中文字幕 | 黄色精品| 欧美色综合网 | 欧美激情精品久久久久久变态 | 国产中文字幕在线 | 亚洲欧美日韩一区二区 | 一区二区三区国产好 | 在线视频a | 风间由美一区二区三区在线观看 | 91干b| 国产精品99久久久精品免费观看 | 第一区在线观看免费国语入口 | 国产目拍亚洲精品99久久精品 |