黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > MYSQL的幻讀和我們平常說的幻讀有什么區別?

MYSQL的幻讀和我們平常說的幻讀有什么區別?

來源:千鋒教育
發布人:xqq
時間: 2023-10-13 19:58:38 1697198318

一、MYSQL的幻讀和我們平常說的幻讀有什么區別

平常說的幻讀

事務1查詢id<10的記錄時,返回了2條記錄,接著事務2插入了一條id為3的記錄,并提交。接著事務1查詢id<10的記錄時,返回了3條記錄,結果多了一條數據。由于Mysql存在MVCC,解決了這種情況下的幻讀。

Mysql的幻讀

Mysql的幻讀,并不是說兩次讀取獲取的結果集不同,幻讀側重的方面是某一次的 select 操作得到的結果所表征的數據狀態無法支撐后續的業務操作。更為具體一些:select 某記錄是否存在,不存在,準備插入此記錄,但執行 insert 時發現此記錄已存在,無法插入,此時就發生了幻讀。

舉個例子:事務T1:

事務T2:

step1 T1: SELECT * FROM users WHERE id = 1;step2 T2: INSERT INTO users VALUES (1, ‘big cat’);step3 T1: INSERT INTO users VALUES (1, ‘big cat’);step4 T1: SELECT * FROM users WHERE id = 1;T1 :主事務,檢測表中是否有 id 為 1 的記錄,沒有則插入,這是我們期望的正常業務邏輯。T2 :干擾事務,目的在于擾亂 T1 的正常的事務執行。

在 RR 隔離級別下,step1、step2 是會正常執行的,step3 則會報錯主鍵沖突,對于 T1 的業務來說是執行失敗的,這里 T1 就是發生了幻讀,因為 T1 在 step1 中讀取的數據狀態并不能支撐后續的業務操作,T1:“見鬼了,我剛才讀到的結果應該可以支持我這樣操作才對啊,為什么現在不可以”。T1 不敢相信的又執行了 step4,發現和 setp1 讀取的結果是一樣的(RR下的 MMVC機制)。此時,幻讀無疑已經發生,T1 無論讀取多少次,都查不到 id = 1 的記錄,但它的確無法插入這條他通過讀取來認定不存在的記錄(此數據已被T2插入),對于 T1 來說,它幻讀了。其實產生幻讀的原因就是:行鎖只能鎖住行,即使把所有的行記錄都上鎖,也阻止不了新插入的記錄。

二、MySQL 是如何解決幻讀的

1、多版本并發控制(MVCC)(快照讀/一致性讀)

多數數據庫都實現了多版本并發控制,并且都是靠保存數據快照來實現的。以?InnoDB?為例。可以理解為每一行中都冗余了兩個字段,一個是行的創建版本,一個是行的刪除(過期)版本。具體的版本號(trx_id)存在?information_schema.INNODB_TRX?表中。版本號(trx_id)隨著每次事務的開啟自增。事務每次取數據的時候都會取創建版本小于當前事務版本的數據,以及過期版本大于當前版本的數據。普通的 select 就是快照讀。

select * from T where number = 1;

原理:將歷史數據存一份快照,所以其他事務增加與刪除數據,對于當前事務來說是不可見的。

2、next-key 鎖 (當前讀)

next-key 鎖包含兩部分

記錄鎖(行鎖)間隙鎖

記錄鎖是加在索引上的鎖,間隙鎖是加在索引之間的。(思考:如果列上沒有索引會發生什么?)

select * from T where number = 1 for update;select * from T where number = 1 lock in share mode;insertupdatedelete

原理:將當前數據行與上一條數據和下一條數據之間的間隙鎖定,保證此范圍內讀取的數據是一致的。

3、MySQL InnoDB 引擎 RR 隔離級別是否解決了幻讀

Mysql官方給出的幻讀解釋是:只要在一個事務中,第二次select多出了row就算幻讀。a事務先select,b事務insert確實會加一個gap鎖,但是如果b事務commit,這個gap鎖就會釋放(釋放后a事務可以隨意dml操作),a事務再select出來的結果在MVCC下還和名列前茅次select一樣,接著a事務不加條件地update,這個update會作用在所有行上(包括b事務新加的),a事務再次select就會出現b事務中的新行,并且這個新行已經被update修改了,實測在RR級別下確實如此。如果這樣理解的話,Mysql的RR級別確實防不住幻讀。

在快照讀讀情況下,mysql通過mvcc來避免幻讀。
在當前讀讀情況下,mysql通過next-key來避免幻讀。

select * from t where a=1;屬于快照讀
select * from t where a=1 lock in share mode;屬于當前讀

不能把快照讀和當前讀得到的結果不一樣這種情況認為是幻讀,這是兩種不同的使用方式。所以我認為mysql的rr級別是解決了幻讀的。

先說結論,MySQL?存儲引擎?InnoDB?隔離級別?RR?解決了幻讀問題。不能把快照讀和當前讀得到的結果不一樣這種情況認為是幻讀,這是兩種不同的使用方式。所以認為?MySQL?的?RR?級別是解決了幻讀的。先說結論,MySQL?存儲引擎?InnoDB?隔離級別?RR?解決了幻讀問題。

如引用一問題所說,T1?select?之后?update,會將 T2 中?insert?的數據一起更新,那么認為多出來一行,所以防不住幻讀。但是其實這種方式是一種?bad case。如圖:

延伸閱讀1:MySQL簡介

MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,屬于 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是較好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
你懂的福利视频| 91麻豆精品国产自产在线| 精品国产亚一区二区三区| 国产伦久视频免费观看 视频| 天天做日日爱| 91麻豆国产福利精品| 国产精品免费久久| 国产一区二区精品在线观看| 韩国毛片免费大片| 免费的黄色小视频| 尤物视频网站在线| 国产精品免费久久| 日本特黄特黄aaaaa大片| 欧美a级片免费看| 亚欧乱色一区二区三区| 日韩字幕在线| 国产原创中文字幕| 一级片片| 日韩中文字幕在线亚洲一区| 精品国产一区二区三区国产馆| 日本在线不卡视频| 午夜家庭影院| 色综合久久手机在线| 国产一区二区福利久久| 久久99青青久久99久久| 韩国三级一区| 亚洲www美色| 精品视频免费在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 99色视频| 亚洲 国产精品 日韩| 黄视频网站在线看| 国产网站免费视频| 日日夜夜婷婷| 成人免费观看的视频黄页| 久久国产精品永久免费网站| 午夜家庭影院| 精品国产一区二区三区久久久蜜臀| 国产成人啪精品| 尤物视频网站在线| 久久精品道一区二区三区| 欧美激情一区二区三区视频| 麻豆午夜视频| 91麻豆爱豆果冻天美星空| 四虎久久精品国产| 久草免费在线观看| 亚洲天堂在线播放| 日韩女人做爰大片| 精品久久久久久中文字幕2017| 国产成a人片在线观看视频| 99色视频在线观看| 日韩在线观看免费| 久久国产精品只做精品| 国产麻豆精品| 成人免费福利片在线观看| 国产网站免费在线观看| 韩国三级香港三级日本三级| 高清一级淫片a级中文字幕 | 九九精品影院| 韩国毛片免费大片| 日日爽天天| 国产一区二区精品| 国产一区二区精品久| 九九精品影院| 国产麻豆精品免费密入口| 成人免费观看男女羞羞视频| 青青久热| 日韩在线观看网站| 国产精品自拍一区| 亚飞与亚基在线观看| 国产一区二区精品尤物| 免费国产一级特黄aa大片在线| 日本在线www| 免费国产在线视频| 欧美爱爱动态| 亚欧乱色一区二区三区| 亚洲天堂一区二区三区四区| 欧美一区二区三区性| 国产视频一区二区在线观看| 九九九国产| 国产不卡在线观看视频| 精品国产香蕉伊思人在线又爽又黄| 日韩中文字幕一区| 青青久久精品国产免费看| 成人a大片在线观看| 99色视频在线观看| 国产视频在线免费观看| 四虎影视精品永久免费网站| 免费的黄色小视频| 日韩中文字幕一区二区不卡| 日韩字幕在线| 午夜激情视频在线播放| 国产伦久视频免费观看 视频| 国产福利免费观看| 欧美一级视频免费| 欧美一区二区三区性| 成人影视在线播放| 成人免费网站久久久| 国产成人精品一区二区视频| 国产网站免费在线观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产不卡精品一区二区三区| 欧美a级片免费看| 日韩字幕在线| 国产成人啪精品| 日本在线不卡免费视频一区| 免费国产一级特黄aa大片在线| 国产伦精品一区三区视频| 成人免费观看男女羞羞视频| 成人高清视频在线观看| 精品视频一区二区| 精品久久久久久中文字幕2017| 国产91精品露脸国语对白| 九九九网站| 麻豆系列 在线视频| 久久精品店| 日韩在线观看视频免费| 精品国产一区二区三区久| 91麻豆精品国产自产在线 | 成人在免费观看视频国产| 成人免费观看视频| 欧美一级视频免费观看| 日韩在线观看视频黄| 国产不卡高清| 国产一区精品| 午夜久久网| 欧美激情伊人| 天天做人人爱夜夜爽2020| 国产视频久久久久| 久久国产精品自由自在| 国产亚洲精品aaa大片| 色综合久久手机在线| 韩国三级视频网站| a级毛片免费观看网站| 天天做人人爱夜夜爽2020毛片| 国产国语在线播放视频| 国产一区二区精品久久| 国产伦精品一区二区三区无广告| 天天做日日爱| 你懂的福利视频| 天天色成人网| 日韩一级黄色大片| 日韩中文字幕在线观看视频| 天堂网中文在线| 免费一级片在线| 久久99中文字幕| 一级女性全黄生活片免费| 午夜在线影院| 欧美激情中文字幕一区二区| 二级片在线观看| 久草免费在线视频| 日韩专区亚洲综合久久| 欧美α片无限看在线观看免费| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 午夜在线亚洲男人午在线| 免费的黄色小视频| 国产精品自拍亚洲| 精品美女| 亚久久伊人精品青青草原2020| 国产一区免费观看| 欧美另类videosbestsex视频 | 四虎久久精品国产| 国产视频在线免费观看| 天天色成人网| 久久久久久久久综合影视网| 91麻豆爱豆果冻天美星空| 麻豆污视频| 日日日夜夜操| 91麻豆国产| 久久国产影院| 亚飞与亚基在线观看| 欧美国产日韩在线| 国产一区免费在线观看| 91麻豆精品国产综合久久久| 亚洲精品影院| 91麻豆精品国产自产在线观看一区 | 欧美激情一区二区三区在线| 天天做日日爱夜夜爽| 精品国产亚洲人成在线| 欧美另类videosbestsex高清| 午夜激情视频在线观看| 美国一区二区三区| 午夜在线亚洲| 欧美另类videosbestsex高清| 国产激情一区二区三区| 美国一区二区三区| 尤物视频网站在线观看| 香蕉视频一级| 国产一区二区精品久久91| 精品久久久久久中文| a级黄色毛片免费播放视频| 日本免费乱人伦在线观看 | 国产一区二区精品| 亚欧成人毛片一区二区三区四区| 成人高清视频在线观看| 亚久久伊人精品青青草原2020| 亚洲wwwwww| 在线观看成人网| 久久国产精品只做精品| 国产91精品一区|