MySQL之索引詳解

來源:互聯網
上載者:User

標籤:ges   com   bsp   b+樹   log   記錄   系統   網路   部落格   

這篇部落格將要闡述為什麼使用b+樹作為索引,而不是b樹或者其他樹

1.什麼是b樹

 

                                                               (圖片來自網路) 

b樹相關特性:⑴關鍵字分布在整棵樹中

                        ⑵任何一個關鍵字只出現在一個節點上

                        ⑶搜尋可能在非葉子節點上結束

                        ⑷搜尋效能等價於在關鍵字全集內做二分尋找

 

2.什麼是b+樹

                                                          (圖片來自網路)

b+樹相關特性:⑴非葉子節點的子樹指標與關鍵字個數相同

                          ⑵b+樹只有在到達葉子節點才會命中,其效能也等價於在關鍵字全集做二分尋找

                          ⑶所有關鍵字都出現在葉子節點的鏈表中,且鏈表中關鍵字恰好有序

                          ⑷不可能在非葉子節點命中

                          ⑸非葉子節點相當於葉子節點的索引,葉子節點相當於資料層

3.為什麼使用b/b+樹

背景:索引很大,一般都不存放於記憶體中,而是以檔案的形式存放在磁碟中,所以索引的優劣主要看磁碟I/O的存取次數

                             (磁碟圖來自網路)

⑴讀取原理:

①磁碟讀取時,系統會根據資料邏輯地址傳給磁碟,磁碟控制電路會解析出物理地址,即分析出哪個磁軌哪個扇區

②為了減小I/O操作,磁碟讀取每次都會預讀,大小通常為頁的整數倍(4k),即使每次是需要讀取一個位元組,磁碟也會讀取一頁的資料(4k)放入記憶體。

 

(在設計的時,資料庫設計者將樹的一個節點設計成一頁的資料)

⑵為什麼使用b+樹而非b樹:

①對b樹而言,如果一次簡述需要訪問4個節點,資料庫設計者把節點大小設計成一頁,讀取一個節點需要一個I/O操作,那麼最多需要3次I/O操作(根節點常存於記憶體)。綜上所述,我們可以得到結論,b-樹相對普通樹而言,其節點的關鍵字多,所以其樹高也就越低,存取時I/O次數也就越少。

②對b+樹而言,b+樹優於b樹的點就在於其非葉子節點只能儲存key,而不儲存關鍵字,這就大大減小了非葉子節點的,每個節點也就能夠存放更多記錄(其對應的索引),樹也就更矮,I/O操作也就越少。

 

MySQL之索引詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.