成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

1次搞懂MySQL索引B+樹和B-樹-創(chuàng)新互聯(lián)

本文主要給大家介紹MySQL索引B+樹和B-樹,文章內(nèi)容都是筆者用心摘選和編輯的,具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下MySQL索引B+樹和B-樹吧。

創(chuàng)新互聯(lián)是一家專業(yè)提供朝陽企業(yè)網(wǎng)站建設,專注與做網(wǎng)站、網(wǎng)站設計、H5開發(fā)、小程序制作等業(yè)務。10年已為朝陽眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。

一、索引的分類

1.從存儲結(jié)構(gòu)上來劃分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。

2.從應用層次來分:普通索引,唯一索引,復合索引。

3.根據(jù)中數(shù)據(jù)的物理順序與鍵值的邏輯(索引)順序關系:聚集索引,非聚集索引。

1)中所描述的是索引存儲時保存的形式,

2)是索引使用過程中進行的分類,兩者是不同層次上的劃分。不過平時講的索引類型一般是指在應用層次的劃分。

就像手機分類,安卓手機,IOS手機 與 華為手機,蘋果手機,OPPO手機一樣。

  • 普通索引:即一個索引只包含單個列,一個表可以有多個單列索引

  • 唯一索引:索引列的值必須唯一,但允許有空值

  • 復合索引:即一個索引包含多個列

  • 聚簇索引(聚集索引):并不是一種單獨的索引類型,而是一種數(shù)據(jù)存儲方式。具體細節(jié)取決于不同的實現(xiàn),InnoDB的聚簇索引其實就是在同一個結(jié)構(gòu)中保存了B-Tree索引(技術上來說是B+Tree)和數(shù)據(jù)行。

  • 非聚簇索引:不是聚簇索引,就是非聚簇索引(認真臉)。

二、索引的底層實現(xiàn)

mysql默認存儲引擎innodb只顯式支持B-Tree( 從技術上來說是B+Tree)索引,對于頻繁訪問的表,innodb會透明建立自適應hash索引,即在B樹索引基礎上建立hash索引,可以顯著提高查找效率,對于客戶端是透明的,不可控制的,隱式的。

不談存儲引擎,只討論實現(xiàn)(抽象)

Hash索引

基于哈希表實現(xiàn),只有精確匹配索引所有列的查詢才有效,對于每一行數(shù)據(jù),存儲引擎都會對所有的索引列計算一個哈希碼(hash code),并且Hash索引將所有的哈希碼存儲在索引中,同時在索引表中保存指向每個數(shù)據(jù)行的指針。

1次搞懂MySQL索引B+樹和B-樹

B-Tree能加快數(shù)據(jù)的訪問速度,因為存儲引擎不再需要進行全表掃描來獲取數(shù)據(jù),數(shù)據(jù)分布在各個節(jié)點之中。

1次搞懂MySQL索引B+樹和B-樹

是B-Tree的改進版本,同時也是數(shù)據(jù)庫索引索引所采用的存儲結(jié)構(gòu)。數(shù)據(jù)都在葉子節(jié)點上,并且增加了順序訪問指針,每個葉子節(jié)點都指向相鄰的葉子節(jié)點的地址。相比B-Tree來說,進行范圍查找時只需要查找兩個節(jié)點,進行遍歷即可。而B-Tree需要獲取所有節(jié)點,相比之下B+Tree效率更高。

1次搞懂MySQL索引B+樹和B-樹

案例:假設有一張學生表,id為主鍵

1次搞懂MySQL索引B+樹和B-樹

在MyISAM引擎中的實現(xiàn)(二級索引也是這樣實現(xiàn)的)

1次搞懂MySQL索引B+樹和B-樹

在InnoDB中的實現(xiàn)

1次搞懂MySQL索引B+樹和B-樹

1次搞懂MySQL索引B+樹和B-樹

三、問題

問:為什么索引結(jié)構(gòu)默認使用B-Tree,而不是hash,二叉樹,紅黑樹?

hash:雖然可以快速定位,但是沒有順序,IO復雜度高。

二叉樹:樹的高度不均勻,不能自平衡,查找效率跟數(shù)據(jù)有關(樹的高度),并且IO代價高。

紅黑樹:樹的高度隨著數(shù)據(jù)量增加而增加,IO代價高。

問:為什么官方建議使用自增長主鍵作為索引。

結(jié)合B+Tree的特點,自增主鍵是連續(xù)的,在插入過程中盡量減少頁分裂,即使要進行頁分裂,也只會分裂很少一部分。并且能減少數(shù)據(jù)的移動,每次插入都是插入到最后。總之就是減少分裂和移動的頻率。

插入連續(xù)的數(shù)據(jù):

1次搞懂MySQL索引B+樹和B-樹

插入非連續(xù)的數(shù)據(jù)

看完以上關于MySQL索引B+樹和B-樹,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識信息 ,可以持續(xù)關注我們的行業(yè)資訊欄目的。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。

網(wǎng)頁標題:1次搞懂MySQL索引B+樹和B-樹-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://jinyejixie.com/article2/ccjcic.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務、做網(wǎng)站、網(wǎng)站改版、網(wǎng)站導航、搜索引擎優(yōu)化、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司