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

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

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        InnoDB中的B+Tree和MVCC

        來源:懂視網 責編:小采 時間:2020-11-09 13:13:10
        文檔

        InnoDB中的B+Tree和MVCC

        InnoDB中的B+Tree和MVCC:之前做了個InnoDB的分享,主要是關于InnoDB中B+Tree的結構和MVCC的實現。 paper writing services PPT:BpTree_MVCC 下面把PPT內容稍微整理一下。 首先是B+Tree,下面給出InnoDB中B+Tree的結構(via) 有如下特點: 尋道次數固定,且次數少(因
        推薦度:
        導讀InnoDB中的B+Tree和MVCC:之前做了個InnoDB的分享,主要是關于InnoDB中B+Tree的結構和MVCC的實現。 paper writing services PPT:BpTree_MVCC 下面把PPT內容稍微整理一下。 首先是B+Tree,下面給出InnoDB中B+Tree的結構(via) 有如下特點: 尋道次數固定,且次數少(因

        之前做了個InnoDB的分享,主要是關于InnoDB中B+Tree的結構和MVCC的實現。 paper writing services PPT:?BpTree_MVCC 下面把PPT內容稍微整理一下。 首先是B+Tree,下面給出InnoDB中B+Tree的結構(via) 有如下特點: 尋道次數固定,且次數少(因為樹高度比較

        之前做了個InnoDB的分享,主要是關于InnoDB中B+Tree的結構和MVCC的實現。

        paper writing services

        PPT:?BpTree_MVCC

        下面把PPT內容稍微整理一下。

        首先是B+Tree,下面給出InnoDB中B+Tree的結構(via)

        有如下特點:

        1. 尋道次數固定,且次數少(因為樹高度比較低),而HD的尋道是非常費時
        2. 數據存儲連續,非葉節點只存儲指針,數據都在葉節點。索引容易緩存
        3. 每條數據都由雙向鏈表組織,范圍查詢快
        4. 數據和葉節點在一起,查詢快(不需要再次尋道),插入慢(分裂/合并需要對更多數據進行移動)。相比MyIASM,葉節點只存指針,插入塊,查詢慢(多尋道)
        5. 葉節點每個塊內部雖然在連續的磁盤空間中,但葉節點本身并不是連續存儲的。經過較長時間的運行,會碎片化,影響范圍查詢的效率。不過mysql提供了對此的優化方法。

        這里強烈推薦?B+Tree index structures in InnoDB 這篇文章,詳細介紹了InnoDB中B+Tree的具體實現結構。

        隨后是關于MVCC。

        MVCC是多版本并發控制,用于在實現事務操作時,替代單純的讀寫鎖。單純的讀寫鎖會對所有讀過的數據加讀寫鎖,讀了就不能寫,寫了就不能讀。

        既然是解決讀寫沖突的問題,那何時能寫何時能讀就是要考慮的重點,為此有“隔離級別”的概念。這個概念強調的就是在什么情況下,允許讀,什么情況下,允許寫。

        InnoDB的MVCC支持四種隔離級別,分別是READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE。其中最常用的是“READ?COMMITTED:讀已提交”和“REPEATABLE READ:可重復讀”。

        1. READ?COMMITTED:讀已提交。SELECT的時候無法保證重復讀數據是一樣的,即同一個事務中兩次執行同樣的查詢語句,若在第一次與第二次查詢之間時間段,其他事務又剛好修改了其查詢的數據且提交了,則兩次讀到的數據不一致。就是“讀”“已提交”的事務。
        2. REPEATABLE READ:可重復讀。任意一次事務中,任何數據的可見性都是在本次事務開始前的狀態,即使其它事務提交了,對當前事務依然不可見。即“可重復”“讀”到相同的內容。

        需要注意的是,無論任何隔離級別,一旦某條記錄被UPDATE/DELETE/SELECT FOR UPDATE,即加X鎖后,事務提交前就不能再被更新(加X鎖)了。

        InnoDB是如何實現事務的多版本呢,我在演講的時候也請出了網易何登成大神的PPT

        地址:?InnoDB Transaction Lock and MVCC:微盤地址??Slideshare地址

        這個PPT詳細介紹了MVCC的具體實現,包括鎖相關的實現,下面我簡單總結下重點。

        InnoDB通過ReadView(視圖)來實現上述隔離級別。ReadView會記錄當前狀態下:

        1. 最小的活躍事務的事務ID(全局唯一,自增)
        2. 當前事務的ID
        3. 所有活躍事務ID所組成的鏈表

        同時,事務修改字段時,在修改原來的值的時候,會標注當前事務的ID,同時把舊的數據和舊的事務ID放到回滾段。

        有了上述兩項操作,那么ReadView的作用就體現出來了,即Select語句讀取:

        1. 擁 有大于最小活躍事務ID的、當前非活躍事務中事務ID最大的 事務ID的 數據
        2. 再組織一下語言,即通過ReadView找到最大的非活躍事務,取得它的事務ID,再去表中或者其回滾段中,尋找擁有這個事務ID的數據。

        同時,任何小于“最小的活躍事務的事務ID”的數據都可以被回收,因為它們再也不會被讀取到。

        因此可以發現,READ?COMMITTED、REPEATABLE READ這兩個級別的差別,就在于ReadView的創建時機。前者再語句開始時創建ReadView,語句結束后Drop;后者在事務開始時創建,事務提交后Drop。即可實現其功能。

        要注意的是,即便對于READ?COMMITTED級別,如果語句執行過程中又有新的事務提交,select還是看不到的(極端情況)。

        ReadView的存儲結構,或者是更深入的研究,可以去看前述的PPT,不再重復。

        其實還分享了關于回滾段、回滾方式,MySQL的X-commit二段提交,對B+Tree的一些操作,感覺寫字還是有點兒蒼白,況且
        Jeremy Cole和何登成的blog和PPT都要詳細、優雅的多,推薦有興趣的同學去看看。

        zp8497586rq

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        InnoDB中的B+Tree和MVCC

        InnoDB中的B+Tree和MVCC:之前做了個InnoDB的分享,主要是關于InnoDB中B+Tree的結構和MVCC的實現。 paper writing services PPT:BpTree_MVCC 下面把PPT內容稍微整理一下。 首先是B+Tree,下面給出InnoDB中B+Tree的結構(via) 有如下特點: 尋道次數固定,且次數少(因
        推薦度:
        標簽: 中的 in 之前
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 影音先锋在线免费观看| 无码专区永久免费AV网站| 成人免费看吃奶视频网站| 久久亚洲AV午夜福利精品一区 | 成人免费一区二区三区在线观看| 久久99国产亚洲高清观看首页| 亚洲国产日韩在线视频| 国产精品亚洲专区在线播放| 久青草视频在线观看免费| 国产成人啪精品视频免费网| 亚洲永久精品ww47| 日本一区二区三区在线视频观看免费 | 亚洲久悠悠色悠在线播放| 曰批全过程免费视频免费看 | 日韩一区二区a片免费观看| 亚洲欧洲日产国码久在线观看| 99re8这里有精品热视频免费| 91九色精品国产免费| 亚洲日本一区二区三区| 久9这里精品免费视频| 亚洲精品视频在线观看免费| 久久久久久国产精品免费无码| 久久精品国产亚洲77777| www.免费在线观看| 亚洲综合在线一区二区三区| 日本不卡免费新一二三区| 国产精品亚洲一区二区在线观看| 国产一级一片免费播放| 一进一出60分钟免费视频| 成人免费在线观看网站| 亚洲av无码专区青青草原| 伊人久久亚洲综合影院| 久久久WWW免费人成精品| 国产亚洲人成网站观看| 久久久久久夜精品精品免费啦| 大胆亚洲人体视频| 香蕉免费一级视频在线观看| 久热综合在线亚洲精品| 无码国产精品久久一区免费| 亚洲精品第一综合99久久| 亚洲第一黄片大全|