十五、Mysql之B+Tree

Hro發表於2018-12-13

一、何為B+Tree?
  B+Tree是在B-Tree基礎上的一種優化,由於B-Tree中,每個節點中不僅包含資料的key值,還有data值,因為每個節點的儲存空間有限制,如果data資料較大時將會導致每個節點能儲存的key的數量很小,當data量很大時同樣會導致B-Tree的深度較大,增大查詢時的磁碟I/O次數,進而影響查詢效率。
   B+Tree中,所有資料記錄節點都是按照鍵值大小順序存放在同一層的葉子節點上,而非葉子節點上只儲存key值資訊,這樣可以大大加大每個節點儲存的key值數量,降低B+Tree的高度。結構如圖(網上找的一個圖):

十五、Mysql之B+Tree
圖中:藍色框表示key值,儲存表記錄中的主鍵;
   黃色表示指標,儲存子節點地址資訊;
   紫色表示資料,除主鍵外的資料。



B+的特性:
  1.所有關鍵字都出現在葉子結點的連結串列中,且連結串列中的關鍵字恰好是有序的;
  2.不可能在非葉子結點命中;
  3.非葉子結點相當於是葉子結點的索引,葉子結點相當於是儲存資料的資料層;
  4.B+Tree上有兩個頭指標,一個指向根節點,另一個指向最小key的葉子節點,所有葉子節點之間是一種鏈式環結構

相關文章