B樹和B 樹的區別

2021-09-09 07:21:34 字數 1234 閱讀 8341

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

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

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

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

那為什麼是b+樹而不是b樹呢,因為它內節點不儲存data,這樣乙個節點就可以儲存更多的key

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

myisam是非事務安全的,而innodb是事務安全的

myisam鎖的粒度是表級的,而innodb支援行級鎖

myisam支援全文型別索引,而innodb不支援全文索引

myisam相對簡單,效率上要優於innodb,小型應用可以考慮使用myisam

myisam表儲存成檔案形式,跨平台使用更加方便

myisam管理非事務表,提供高速儲存和檢索以及全文搜尋能力,如果在應用中執行大量select操作可選擇

innodb用於事務處理,具有acid事務支援等特性,如果在應用中執行大量insert和update操作,可選擇。

b+樹中只有葉子節點會帶有資料記錄,而b樹則所有節點都指向資料記錄的行號,在內部節點出現的索引項不會再出現在葉子節點中。

b+樹中所有葉子節點都是通過指標連線在一起,而b樹不會。

非葉子節點不會帶上資料記錄,這樣,乙個塊中可以容納更多的索引項,一是可以降低樹的高度,減少查詢時間。二是乙個內部節點可以定位更多的葉子節點。

葉子節點之間通過指標來連線,範圍掃瞄將十分簡單,而對於b樹來說,則需要在葉子節點和內部節點不停的往返移動。

參考

B樹,B 樹和B 樹 B 樹的區別

之前一些概念混淆,現在更正一下。b樹 b tree樹即b樹,b即balanced,平衡的意思。因為b樹的原英文名稱為b tree,而國內很多人喜歡把b tree譯作b 樹,其實,這種直譯不好,容易產生誤解。如人們可能會以為b 樹是一種樹,而b樹又是一種樹。事實上,b tree就是指b樹。特此說明。先...

B樹,B 樹和B 樹的區別

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

B樹,B 樹和B 樹的區別

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