B樹與B 樹的區別

2021-08-17 02:26:29 字數 1082 閱讀 1681

看了很多講b樹和

b+樹的文章,大多都是圍繞各自的特性講的,第一,樹中每個結點最多含有m個孩子(m>=2);第二,……我也是從這些文章裡弄懂了各種樹的聯絡與區別,要真寫,我可能還不如人家寫得好。所以就在這裡簡明扼要的用幾張圖記錄一下主要區別吧。

為了便於說明,我們先定義一條資料記錄為乙個二元組[key,data],key為記錄的鍵值,key唯一;data為資料記錄除key外的資料。b樹

每個節點都儲存key和data,所有節點組成這棵樹,並且葉子節點指標為

只有葉子節點儲存data,葉子節點包含了這棵樹的所有鍵值,葉子節點不儲存指標。

後來,在

b+樹上增加了順序訪問指標,也就是每個葉子節點增加乙個指向相鄰葉子節點的指標,這樣一棵樹成了資料庫系統實現索引的首選資料結構。

原因有很多,最主要的是這棵樹矮胖,呵呵。一般來說,索引很大,往往以索引檔案的形式儲存的磁碟上,索引查詢時產生磁碟i/o消耗,相對於記憶體訪問,i/o訪問的消耗要高幾個數量級,所以評價乙個資料結構作為索引的優劣最重要的指標就是在查詢過程中磁碟i/o操作次數的時間複雜度。樹高度越小,i/o次數越少。

那為什麼是

b+樹而不是

b樹呢,因為它內節點不儲存

data

,這樣乙個節點就可以儲存更多的

key。

在mysql中,最常用的兩個儲存引擎是myisam和innodb,它們對索引的實現方式是不同的。

myisam

data存的是資料位址。索引是索引,資料是資料。

data存的是資料本身。索引也是資料。

B樹與B 樹區別

b樹是一種平衡多路查詢樹,它的每乙個節點最多包含k個孩子,k被稱作為b樹的階,k的大小取決於磁碟頁的大小。一棵m階b樹 balanced tree of order m 是一棵平衡的m路搜尋樹。它或者是空樹,或者是滿足下列性質的樹 根結點至少有兩個子女 每個中間節點都包含k 1個元素和k個孩子,其中...

B樹 B 樹 B 樹 B 樹的區別

b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...

B樹 B 樹 B 樹 B 樹的區別

即二叉查詢樹 二叉排序樹或二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比...