MySQL 中的 B+ Tree 索引

索引是爲了加速表中數據行的檢索而創建的一種分散存儲的數據結構

  1. 爲什麼不用平衡二叉樹做索引的數據結構
  • 搜索效率低
    • 一般來說,在樹的結構中數據所處的深度決定了它的搜索時 IO 的次數
    • 二叉樹分路較少,數據量較多時樹的深度就會很深
  • 節點數據內容較少
    • 沒有很好的利用操作系統和磁盤的數據交換特性和磁盤預讀能力
    • 即操作系統:空間局部性原理
  1. B+ 樹
  • B+ 節點關鍵字搜索採用閉合區間
  • B+ 非葉子節點不保存數據相關信息,只保存關鍵字和子節點的引用
  • B+ 關鍵字對應的數據保存在葉子節點中
  • B+ 葉子節點是順序排列的,並且相鄰的節點具有順序引用關係
  1. 相對於 B 樹,爲什麼使用 B+ 樹做索引的數據結構
  • B+ 樹掃庫掃表能力更強
  • 磁盤讀寫能力更強
  • 排序能力更強
  • 查詢效率更加穩定 (可能比B樹慢一些)

MyISAM 搜索引擎下的 B+ Tree 索引

在這裏插入圖片描述
在這裏插入圖片描述

InnoDB 搜索引擎下的 B+ Tree 索引

在這裏插入圖片描述
在這裏插入圖片描述

InnoDB VS MyISAM

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章