紅黑樹,B樹學習筆記

紅黑樹是一棵特殊的二叉查找樹。爲了讓樹儘可能矮,平衡,減少查找比較次數,所以出現了紅黑樹

   

插入紅6,父親,叔叔,爺爺反色。此時造成以5爲根的節點不平衡。

以5爲根的節點開始左旋,左旋結束後,12和5 同色,且以19爲根的樹左右不平衡,這時開始右旋,同時,12和19反色。

 

爲什麼hash不能用做mysql索引:

B樹:

B樹的構建過程

插入8的時候產生分裂。分裂的節點爲分裂後的中間節點。5階的樹,每個節點簇只能放四個數據

插入13的時候,從13開始分裂,此時13上移,和7在同一層,如果第一層也滿了,就同上圖。

Mysql如果用B樹存索引,如下,每個節點,不止存userid,還存了一個指向具體數據的地址,造成空間浪費。

B+樹存索引:通過雙向鏈表,可以直接找到小於或者大於某個數的所有數據,分支節點不存數據省空間,因爲一般來說,索引本身也很大,不可能全部存儲在內存中,因此索引往往以索引文件的形式存儲在磁盤上,這樣,索引查找過程中就要產生磁盤IO消耗。因此,選擇數據結構時,索引的結構組織要儘量減少查找過程中磁盤IO的存取次數。

B+樹的階與計算機一個頁的大小有關。聯合索引有最左匹配原則,即只找最左邊的查詢條件,最後到葉子節點裏去找。

 

 

 

 

 

 

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