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

Innodb RR隔離級別下到底能否避免幻讀

運維 數據庫運維
這篇文章營養價值不高,主要是用來糾正大家一些觀念,有時候八股文盲目去背沒有細細思考,可能就會導致認知上的錯誤。最后總結一下,在RR隔離級別下只要不出現快照讀和當前讀的切換,其實就能保證不會出現幻讀。

[[419546]]

背景

這個事情要回溯到曾經背八股文的時候了,想必大家在背八股文的時候對于事務隔離級別都已經背得滾瓜爛熟了,一般在說隔離級別的時候,都順帶會提到mysql的innodb的RR隔離級別,由于他與眾不同的實現方式,通常會有下面的一些描述:

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

我的第一反應也是

怎么定義幻讀?

其實對于這個爭論,很多點在于什么才叫做幻讀?先來一個幻讀的通俗的定義,對于相同的區間查詢,插入和刪除操作使得對相同的區間查詢操作返回不同的結果。

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

接下來我們再看一下MySQL官方定義的幻讀:

翻譯過來其實就是:當同一個查詢在不同的時間產生不同的集合時,就會發生所謂的幻讀問題。例如,如果一個SELECT執行了兩次,但是第二次返回了第一次沒有返回的行,那么該行就是一個“幻像”行。

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

上面有兩個事務,事務B發生了幻讀的現象,為什么說這里是幻讀的現象呢?因為按照MySQL的定義兩次查詢返回不同集合,事務B的確是發生了幻讀現象。

為什么會出現這個情況呢?這個主要還是因為在innodb下所有的讀都是快照讀,如果我們在事務中對這個數據加鎖,那么就變成了當前讀,所以就能讀取到事務A寫的數據了。這種情況在一些文獻中也被叫做: write skew style phantom。

RR級別如何解決幻讀?

其實我們細細分析,我們上面那個情況是怎么解決的幻讀,是依靠next-key lock,而我們第二個案例雖然在事務中但是卻沒有使用next-key lock,如果我們真的對幻讀有很多要求的話,那么我們在查詢的時候直接加上select ... for update 加上鎖,這樣可以直接讓我們走當前讀,從而避免幻讀的出現。

最后 

這篇文章營養價值不高,主要是用來糾正大家一些觀念,有時候八股文盲目去背沒有細細思考,可能就會導致認知上的錯誤。最后總結一下,在RR隔離級別下只要不出現快照讀和當前讀的切換,其實就能保證不會出現幻讀。

 

責任編輯:武曉燕 來源: 咖啡拿鐵
相關推薦

2023-08-09 17:22:30

MVCCMySQL數據

2024-04-25 08:16:06

InnodbReadMVCC

2021-10-08 07:53:01

事務隔離級別

2021-07-26 10:28:13

MySQL事務隔離

2022-12-27 10:02:38

MVCC機制Innodb

2023-12-27 18:16:39

MVCC隔離級別幻讀

2024-05-13 11:46:33

MySQL數據庫

2022-09-08 13:56:49

MySQL事務記錄鎖

2024-03-11 00:00:00

mysqlInnoDB幻讀

2023-11-01 14:13:00

MySQL事務隔離級別

2024-04-23 08:17:14

MySQL數據庫隔離

2022-09-21 09:00:10

MySQL幻讀隔離級別

2019-05-28 13:50:27

MySQL幻讀數據庫

2022-02-17 21:13:08

MySQL架構體系

2024-04-24 08:26:35

事務數據InnoDB

2022-06-29 11:01:05

MySQL事務隔離級別

2010-09-30 16:41:36

DB2隔離級別

2022-10-26 07:39:36

MVCC數據庫RR

2010-09-30 16:35:34

DB2隔離級別

2024-05-06 00:00:00

InnoDBView隔離
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91av在线视频观看 | 三级av在线 | 亚洲成人午夜电影 | 99精品国产一区二区三区 | 国产成人精品免费视频大全最热 | 天堂资源| 午夜在线精品偷拍 | 久久精品久久久久久 | 欧美成ee人免费视频 | 色婷婷亚洲一区二区三区 | 日韩欧美久久 | 成人精品视频在线观看 | 伊人免费在线观看高清 | 精品日韩欧美一区二区 | 一级一级毛片免费看 | 2022精品国偷自产免费观看 | 国产精品毛片一区二区在线看 | 国产a区 | 色就干| 日韩av中文 | 久久高清 | 亚洲一区二区三区免费在线观看 | 中文字幕免费观看 | 久久国产视频网 | 日韩区| 久久欧美高清二区三区 | 国产第二页 | 日韩精品一区二区三区在线观看 | 国产精品色一区二区三区 | 亚洲36d大奶网| 日韩久久中文字幕 | 日本不卡一区二区三区 | 久久噜噜噜精品国产亚洲综合 | av免费网| 亚洲精品一区二区三区中文字幕 | 欧美vide| 精品一区二区三区四区在线 | 成人在线视频网址 | 国产小视频在线观看 | 91亚洲精选 | 亚洲第一av |