資料庫採用B 樹而不是B 樹 b樹的原因

2021-08-19 07:00:43 字數 752 閱讀 9482

總結:  1. 不包含data ,每頁的包含的內容會比較多,出度比較高. 深度低,有效保證效能

2. 葉子節點包含所有內容,便於全域性遍歷.

原因:相對於b樹,

(1)b+樹空間利用率更高,可減少i/o次數,

一般來說,索引本身也很大,不可能全部儲存在記憶體中,因此索引往往以索引檔案的形式儲存的磁碟上。這樣的話,索引查詢過程中就要產生磁碟i/o消耗。而

因為b+樹的內部節點只是作為索引使用,而不像b-樹那樣每個節點都需要儲存硬碟指標。

也就是說:

b+樹中每個非葉節點沒有指向某個關鍵字具體資訊的指標,所以每乙個節點可以存放更多的關鍵字數量,即一次性讀入記憶體所需要查詢的關鍵字也就越多,減少了i/o操作。

e.g.

假設磁碟中的乙個盤塊容納16bytes,而乙個關鍵字2bytes,乙個關鍵字具體資訊指標2bytes。一棵9階b-tree(乙個結點最多8個關鍵字)的內

部結點需要2個盤快。而

b+ 樹內部結點只需要1個盤快。當需要把內部結點讀入記憶體中的時候,b 樹就比

b+ 樹多一次盤塊查詢時間(在磁碟中就

是         碟片旋轉的時間)。

(2)增刪檔案(節點)時,效率更高,

因為b+樹的葉子節點包含所有關鍵字,並以有序的鍊錶結構儲存,這樣可很好提高增刪效率。

(3) b+樹的

查詢效率更加穩定,

因為b+樹的每次查詢過程中,都需要遍歷從根節點到葉子節點的某條路徑。所有關鍵字的查詢路徑長度相同,導致每一次查詢的效率相當。

b樹b 樹b 樹 資料庫之B 樹

資料庫索引就是使用b 樹和b 樹來實現的 為什麼要建立b 樹演算法?給出兩個常用的sql語句 根據某個值查詢資料 select from user where id 1234 根據區間值來查詢某些資料 select from user where id 1234and id 2345 考慮到效能方面...

為啥使用B 樹而不是B樹

innodb和myisam為什麼使用b 樹而不是b樹。這個問題最好還是要搞懂一點。因為我這裡很有可能會問到這方面的。我也很想和別人扯索引,然後就會扯到這個。加油。b樹特點 1 m叉搜尋,降低高度 2 所有的節點都儲存資料。3 中序遍歷可以得到乙個排序好的索引。為什麼可以建索引 就是可以降低高度,然後...

資料庫原理知識 B 樹 B 樹 B 樹

b 樹 是一種多路搜尋樹 並不是二叉的 1.定義任意非葉子結點最多只有m個兒子 且m 2 2.根結點的兒子數為 2,m 3.除根結點以外的非葉子結點的兒子數為 m 2,m 4.每個結點存放至少m 2 1 取上整 和至多m 1個關鍵字 至少2個關鍵字 5.非葉子結點的關鍵字個數 指向兒子的指標個數 1...