mysql b 1 mysql為什麼使用B 樹

2021-10-18 08:55:25 字數 823 閱讀 7038

mysql為什麼使用b+樹?

1、如何從磁碟中獲取資料?(io)

要獲取磁碟上資料,必須先通過磁碟移動臂移動到資料所在的柱面,然後找到指定盤面,接著旋轉盤面找到資料所在的磁軌,最後對資料進行讀寫。磁碟io代價主要花費在查詢所需的柱面上,樹的深度過大會造成磁碟io頻繁讀寫。

2、b+樹優點

b樹結構圖

b+樹結構圖

(1)由上圖b樹結構圖和b+樹結構圖可知,b樹乙個節點中的子節點不光包含key也包含value,而b+樹非葉子節點只儲存key,不儲存value,在實際儲存過程中,value通常遠大於key,因此b樹乙個節點中可以儲存的子節點數量比b+樹相同大小節點儲存的子節點少。由於b樹乙個節點儲存的子節點數量少,因此整個樹的高度比b+樹高,查詢的時間複雜度也相對較高。

(2)b+樹所有具體的資料都存在葉子節點上,所以每次查詢都要查到葉子節點,查詢速度比較穩定。

(3)b+樹所有葉子節點構成了乙個有序鍊錶,做區間查詢比較方便。

成了乙個有序鍊錶,做區間查詢比較方便。

資料庫系統的設計者巧妙利用了磁碟預讀原理,將乙個節點的大小設為等於乙個頁,這樣每個節點只需要一次i/o就可以完全載入。為了達到這個目的,在實際實現b-tree還需要使用如下技巧:每次新建節點時,直接申請乙個頁的空間,這樣就保證乙個節點物理上也儲存在乙個頁裡,加之計算機儲存分配都是按頁對齊的,就實現了乙個node只需一次i/o。

1 為什麼選擇RTX

rtx realtime executive 是arm公司針對arm7,arm9,cortex m核心推出的一款嵌入式實時作業系統。該系統占用記憶體很小,切換速度很快,特別適合一些記憶體小的晶元,像只有32kb的flash,8kb的ram的cortex m0都可以使用 開4,5個任務都ok的,不像u...

1 為什麼選擇RTX

rtx realtime executive 是arm公司針對arm7,arm9,cortex m核心推出的一款嵌入式實時作業系統。該系統占用記憶體很小,切換速度很快,特別適合一些記憶體小的晶元,像只有32kb的flash,8kb的ram的cortex m0都可以使用 開4,5個任務都ok的,不像u...

1 為什麼要有指標?

0 史前 早期的cpu 也許並沒有真正的實現 並不如今天的強大,記憶體讀寫的指令可能只有 從 常數 0x1234位址處讀入1位元組到暫存器a 或者 把暫存器b的值寫入 常數 位址0x5678這個地方 那個時候沒有變數這一說,所有的記憶體讀寫都得指定好常數,也就是得把具體的數字 也稱為字面量,lite...