為什麼選擇B 樹作為資料庫索引結構?

2021-10-09 21:42:00 字數 541 閱讀 1757

首先,來談談b樹。為什麼要使用b樹?我們需要明白以下兩個事實:

不同容量的儲存器,訪問速度差異懸殊。以磁碟和記憶體為例,訪問磁碟的時間大概是ms級的,訪問記憶體的時間大概是ns級的。有個形象的比喻,若一次記憶體訪問需要1秒,則一次外存訪問需要1天。所以,現在的儲存系統,都是分級組織的。

最常用的資料盡可能放在更高層、更小的儲存器中,只有在當前層找不到,才向更低層、更大的儲存器中尋找。這也就解釋了,當處理大規模資料的時候(指無法將資料一次性存入記憶體),演算法的實際執行時間,往往取決於資料在不同儲存級別之間的io次數。因此,要想提公升速度,關鍵在於減少io。

磁碟讀取資料是以資料塊(block)(或者:頁,page)為基本單位的,位於同一資料塊中的所有資料都能被一次性全部讀取出來。

當乙個資料被用到時,其附近的資料也通常會馬上被使用,程式執行期間所需要的資料通常比較集中

假設有10億條記錄(100010001000),如果使用平衡二叉搜尋樹(balanced binary search tree, bbst),最壞的情況下,查詢需

資料庫 為什麼選擇B 樹作為資料庫索引結構?

首先,來談談b樹。為什麼要使用b樹?我們需要明白以下兩個事實 事實1 不同容量的儲存器,訪問速度差異懸殊。以磁碟和記憶體為例,訪問磁碟的時間大概是ms級的,訪問記憶體的時間大概是ns級的。有個形象的比喻,若一次記憶體訪問需要1秒,則一次外存訪問需要1天。所以,現在的儲存系統,都是分級組織的。最常用的...

資料庫索引為什麼使用B 樹?

b tree 二叉樹 binary tree 每個節點只能儲存乙個數。b tree b樹 b tree,並不是b 減 樹,橫槓為連線符,容易被誤導 b樹屬於多叉樹又名平衡多路查詢樹。每個節點可以多個數 由磁碟大小決定 b tree和b tree都是 b tree的變種 一般來說,索引本身也很大,不可...

資料庫索引為什麼使用B 樹

首先,紅黑樹乙個節點存乙個索引,雖然能提公升查詢的效率,但是o log2 n 的優化有限,對於大量資料而言,樹高決定了io的次數還是比較多 b 樹相比b樹,非葉子節點只存索引和下一節點指標,而少了關鍵字具體資訊的指標,所以節點比較小。在一次io操作下,讀取到的資料塊中,索引key更多,相對來說,進行...