色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL事務隔離級別要實際解決的問題

冬至子 ? 來源:后端元宇宙 ? 作者:binron ? 2022-11-17 17:00 ? 次閱讀

在MySQL的眾多存儲引擎中,只有InnoDB支持事務,所有這里說的事務隔離級別指的是InnoDB下的事務隔離級別。

MySQL 是支持多事務并發執行的。否則來一個事務處理一個請求,處理一個人請求的時候,其它事務都等著,那估計都沒人敢用MySQL作為數據庫,因為用戶體驗太差,估計都要砸鍵盤了。

既然事務可以并發操作,這里就有一些問題:一個事務在寫數據的時候,另一個事務要讀這行數據,該怎么處理?一個事務在寫數據,另一個數據也要寫這行數據,又該怎么處理這個沖突?

這就是并發事務所產生的一些問題。具體來說就是:臟讀不可重復讀幻讀

概念說明

以下幾個概念是事務隔離級別要實際解決的問題,所以需要搞清楚都是什么意思。

臟讀

臟讀指的是讀到了其他事務未提交的數據,未提交意味著這些數據可能會回滾,也就是可能最終不會存到數據庫中,也就是不存在的數據。讀到了并一定最終存在的數據,這就是臟讀。

圖片

臟讀最大的問題就是可能會讀到不存在的數據。比如在上圖中,事務B的更新數據被事務A讀取,但是事務B回滾了,更新數據全部還原,也就是說事務A剛剛讀到的數據并沒有存在于數據庫中。

從宏觀來看,就是事務A讀出了一條不存在的數據,這個問題是很嚴重的。

不可重復讀

不可重復讀指的是在一個事務內,最開始讀到的數據和事務結束前的任意時刻讀到的同一批數據出現不一致的情況。

圖片

事務 A 多次讀取同一數據,但事務 B 在事務A多次讀取的過程中,對數據作了更新并提交,導致事務A多次讀取同一數據時,結果 不一致。

幻讀

臟讀、不可重復讀上面的圖文都很好的理解,對于幻讀網上有很多文章都是這么解釋的

幻讀錯誤的理解:說幻讀是 事務A 執行兩次 select 操作得到不同的數據集,即 select 1 得到 10 條記錄,select 2 得到 15 條記錄。這其實并不是幻讀,既然第一次和第二次讀取的不一致,那不還是不可重復讀嗎,所以這是不可重復讀的一種。

正確的理解應該是

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

舉例

假設有張用戶表,這張表的 id 是主鍵。表中一開始有4條數據。

圖片

我們再來看下出現 幻讀 的場景

圖片

這里是在RR級別下研究(可重復讀),因為 RU / RC 下還會存在臟讀、不可重復讀,故我們就以 RR 級別來研究 幻讀,排除其他干擾。

1、事務A,查詢是否存在 id=5 的記錄,沒有則插入,這是我們期望的正常業務邏輯。

2、這個時候 事務B 新增的一條 id=5 的記錄,并提交事務。

3、事務A,再去查詢 id=5 的時候,發現還是沒有記錄(因為這里是在RR級別下研究(可重復讀),所以讀到依然沒有數據)

4、事務A,插入一條 id=5 的數據。

最終 事務A 提交事務,發現報錯了。這就很奇怪,查的時候明明沒有這條記錄,但插入的時候 卻告訴我 主鍵沖突,這就好像幻覺一樣。這才是所有的幻讀。

不可重復讀側重表達 讀-讀,幻讀則是說 讀-寫,用寫來證實讀的是鬼影。

事務的隔離級別

上述所說的"臟讀",“不可重復讀”,"幻讀"這些問題,其實就是數據庫讀一致性問題,必須由數據庫提供的事務隔離機制來進行解決。

圖片

首先說讀未提交,它是性能最好,也可以說它是最野蠻的方式,因為它壓根兒就不加鎖,所以根本談不上什么隔離效果,可以理解為沒有隔離。

再來說串行化。串行化就相當于上面所說的,處理一個人請求的時候,別的人都等著。讀的時候加共享鎖,也就是其他事務可以并發讀,但是不能寫。寫的時候加排它鎖,其他事務不能并發寫也不能并發讀。

最后說讀提交和可重復讀。這兩種隔離級別是比較復雜的,既要允許一定的并發,又想要兼顧的解決問題。MySQL默認事務隔離級別為可重復讀(RR),oracle默認事務隔離級別為讀已提交(RC),

數據庫的事務隔離越嚴格,并發副作用越小,但付出的代價越大;因為事務隔離本質就是使事務在一定程度上處于串行狀態,這本身就是和并發相矛盾的。

同時,不同的應用對讀一致性和事務隔離級別是不一樣的,比如許多應用對數據的一致性沒那么個高要求,相反,對并發有一定要求。

審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • MySQL
    +關注

    關注

    1

    文章

    829

    瀏覽量

    26674
收藏 人收藏

    評論

    相關推薦

    #硬聲創作季 mysql數據庫+redis實戰:Mysql隔離級別有哪些

    數據庫隔離MySQL
    Mr_haohao
    發布于 :2022年09月16日 13:14:59

    Mysql數據庫架構:第九節 Mysql事務隔離級別 #大數據 #數據庫 #mysql數據庫#硬聲創作季

    SQL數據庫隔離MySQL
    學習硬聲知識
    發布于 :2022年10月21日 15:04:35

    大數據MySQL8.0-155-MySQL事務-隔離級別-概述#硬聲創作季

    MySQL大數據
    電子學習
    發布于 :2023年01月05日 15:46:11

    事務的四大特性

    事務和并發一致性、封鎖、隔離級別
    發表于 05-09 06:49

    詳解Mysql數據庫InnoDB存儲引擎事務

    關于Mysql數據庫InnoDB存儲引擎事務的一點理解
    發表于 05-13 10:11

    Mysql事物級別的定義

    Mysql的事物級別
    發表于 06-03 15:23

    mysql隔離性測試

    mysql事務隔離級別測試
    發表于 09-09 14:27

    MySQL的索引、事務、視圖介紹

    MySQL--索引、事務、視圖
    發表于 06-15 07:05

    MySQL存儲引擎簡析

    索引的情況下才會起作用。InnoDB 支持事務,且支持四種隔離級別(讀未提交、讀已提交、可重復讀、串行化),默認的為可重復讀。Myisam??Myisam 的存儲文件有三個,后綴名分別是.frm
    發表于 09-06 06:07

    MySQL事務日志

    大家都清楚,日志是 MySQL 數據庫的重要組成部分,記錄著數據庫運行期間各種狀態信息。MySQL 日志主要包括「錯誤日志」、「查詢日志」、「慢查詢日志」、「二進制日志(binlog)」和 事務日志
    的頭像 發表于 11-14 09:58 ?1758次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>事務</b>日志

    MySQL事務的四大隔離級別詳解

    之前分析一個死鎖問題,發現自己對數據庫隔離級別理解還不夠深入,所以趁著這幾天假期,整理一下MySQL事務的四大隔離
    的頭像 發表于 11-27 16:07 ?2717次閱讀

    關于Mysql的20道問題詳解

    1.什么Mysql事務事務的四大特性?事務帶來的什么問題? Mysql事務
    的頭像 發表于 10-26 09:56 ?1427次閱讀
    關于<b class='flag-5'>Mysql</b>的20道問題詳解

    你是否對MySQL數據庫中的事務已經有所了解呢?

    你是否對 MySQL 數據庫中的事務已經有所了解?看下面這張圖,按照 1~6 的順序依次執行,在RR隔離級別下,事務 A 和
    的頭像 發表于 02-21 17:20 ?688次閱讀

    MYSQL事務的底層原理詳解

    事務的實現機制上,MySQL 采用的是 WAL:Write-ahead logging,預寫式日志,機制來實現的。
    的頭像 發表于 11-15 10:10 ?603次閱讀
    <b class='flag-5'>MYSQL</b><b class='flag-5'>事務</b>的底層原理詳解

    阿里二面:了解MySQL事務底層原理嗎

    MySQL 是如何來解決臟寫這種問題的?沒錯,就是鎖。MySQL 在開啟一個事務的時候,他會將某條記錄和事務做一個綁定。這個其實和 JVM 鎖是類似的。
    的頭像 發表于 01-18 16:34 ?367次閱讀
    阿里二面:了解<b class='flag-5'>MySQL</b><b class='flag-5'>事務</b>底層原理嗎
    主站蜘蛛池模板: 亚洲欧美日本国产在线观18 | 日韩少妇爆乳无码专区 | 丰满少妇69激懒啪啪无码 | 亚洲福利精品电影在线观看 | 全黄h全肉短篇禁乱np | 精品国产成人系列 | 久青草国产在线视频亚瑟影视 | 亚洲AV无码国产精品色午夜情 | 两个女人互添下身高潮自视频 | 亚洲欧美日本国产在线观18 | 四虎成人影院 | 亚洲精品久久久久中文字幕二区 | 青柠在线电影高清免费观看 | 蜜臀AV人妻久久无码精品麻豆 | 18禁止看的免费污网站 | 九九99国产香蕉视频 | 欧美精品中文字幕亚洲专区 | 99视频精品免视3 | 99久久免热在线观看6 | 男人插曲女人的叫声 | 色爱AV综合区 | 亚洲精品理论电影在线观看 | 99国产亚洲精品无码成人 | 亚洲精品久久久无码 | 四虎永久精品视频在线 | 花蝴蝶在线观看免费中文版高清 | 久久精品中文騷妇女内射 | 小黄文纯肉短篇 | 91久久综合精品国产丝袜长腿 | 旧里番ovaの催○セイ活指导 | 在线视频 国产精品 中文字幕 | 日本无卡无吗在线 | 国产 亚洲 中文字幕 久久网 | 国产亚洲日韩另类在线观看 | 在线观看永久免费网址 | 成人在线观看播放 | 亚洲无遮挡无码A片在线 | 俄罗斯bbbb | 99久久热视频只有精品 | 动漫美女被吸奶 | 色狠狠色综合吹潮 |