B-Tree和B+Tree索引

B樹是一種多路平衡查找樹,它的每一個節點最多包含K個子節點,K成爲樹的階,k的大小取決於磁盤頁的大小。相對於二叉樹查找樹的優點,二叉樹查找數據時候,最多要進行n(樹的高度)次查找,最壞狀況下磁盤IO樹等於樹的高度。IO次數少才能提升查找性能。性能

B-Tree是爲磁盤等外存儲設備設計的一種平衡查找樹。設計

先了解磁盤的相關知識:指針

1.系統從磁盤讀取數據到內存時是以磁盤塊爲基本單位的,位於同一磁盤塊中的數據會被一次性的讀取出來,而不是須要什麼讀取什麼。索引

2.InnerDB存儲引擎中是有頁(Page)的概念,頁是其管理的最小單位。默認每頁的大小爲16KB,能夠設置。InnerDB在把磁盤數據讀入內存的時候,會以頁爲基本單位。B-Tree的結構能夠讓系統高效的找到數據所在的磁盤塊。內存

B+樹是B-Tree的變種,有着比B-Tree更改的查詢性能。二叉樹

1個m階的B+樹具備以下特色:鏈表

1.有k個子樹的中間節點包含k個元素,每一個元素不保存數據,只用來索引,全部數據保存在葉子節點上。數據

2.全部的葉子節點包含了所有元素的信息,及只想包含這些元素記錄的指針,且葉子節點自己依關鍵字的大小自小而大順序鏈接。查詢

3.全部的中間節點元素都同時存在於子節點,在子元素節點中是最大(或最小)元素。磁盤

優點:

1.單一節點存儲更多元素,是的查詢的IO次數減小。

2.全部查詢都要到葉子節點,查詢性能穩定。

3.全部葉子節點都造成有序鏈表,便於範圍查詢。

相關文章
相關標籤/搜索