B樹查詢,磁碟查詢資料
【B~樹】
B~樹,又叫平衡多路查詢樹。一棵m階的B~樹 (m叉樹)的特性如下:
1) 樹中每個結點至多有m個孩子;
2) 除根結點和葉子結點外,其它每個結點至少有[m/2]個孩子;
3) 若根結點不是葉子結點,則至少有2個孩子;
4) 所有葉子結點都出現在同一層,葉子結點不包含任何關鍵字資訊(可以看做是外部接點或查詢失敗的接點,實際上這些結點不存在,指向這些結點的指標都為null);
5) 每個非終端結點中包含有n個關鍵字資訊: (n,A0,K1,A1,K2,A2,......,Kn,An)。其中,
a) Ki (i=1...n)為關鍵字,且關鍵字按順序排序Ki < K(i-1)。
b) Ai為指向子樹根的接點,且指標A(i-1)指向子樹種所有結點的關鍵字均小於Ki,但都大於K(i-1)。
c) 關鍵字的個數n必須滿足: [m/2]-1 <= n <= m-1
現在我們模擬查詢檔案29的過程:
(1) 根據根結點指標找到檔案目錄的根磁碟塊1,將其中的資訊匯入記憶體。【磁碟IO操作1次】
(2) 此時記憶體中有兩個檔名17,35和三個儲存其他磁碟頁面地址的資料。根據演算法我們發現17<29<35,因此我們找到指標p2。
(3) 根據p2指標,我們定位到磁碟塊3,並將其中的資訊匯入記憶體。【磁碟IO操作2次】
(4) 此時記憶體中有兩個檔名26,30和三個儲存其他磁碟頁面地址的資料。根據演算法我們發現26<29<30,因此我們找到指標p2。
(5) 根據p2指標,我們定位到磁碟塊8,並將其中的資訊匯入記憶體。【磁碟IO操作3次】
(6) 此時記憶體中有兩個檔名28,29。根據演算法我們查詢到檔案29,並定位了該檔案記憶體的磁碟地址。
相關文章
- 資料結構之查詢(順序、折半、分塊查詢,B樹、B+樹)資料結構
- 多路查詢樹:B-tree/b+tree
- MySQL - 資料查詢 - 簡單查詢MySql
- 平衡查詢樹
- 多路查詢樹
- 查詢最佳化——查詢樹結構
- Java ——MongDB 插入資料、 模糊查詢、in查詢Java
- 資料庫高階查詢之子查詢資料庫
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- 資料庫基礎查詢--單表查詢資料庫
- elasticsearch查詢之大資料集分頁查詢Elasticsearch大資料
- Java資料結構(十五)—— 多路查詢樹Java資料結構
- 多路查詢樹(2-3 樹、2-3-4 樹、B 樹、B+ 樹)
- oracle樹形查詢Oracle
- RESTFul資料查詢REST
- MYSQL查詢資料MySql
- indexedDB 查詢資料Index
- AMS 資料查詢
- 二叉查詢樹的插入刪除查詢
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- 20240719資料庫關聯查詢、條件查詢資料庫
- B樹(B-tree, 平衡的多路查詢樹)的相關知識
- Logtail:像查詢資料庫一樣查詢日誌AI資料庫
- 二叉查詢樹
- 查詢a表中b表沒有的資料,使用not exists
- Jemter查詢資料庫資料庫
- Flask——資料的查詢Flask
- 求助:資料庫查詢資料庫
- ThinkPHP 資料庫查詢PHP資料庫
- 資料庫排序查詢資料庫排序
- 查詢資料庫大小資料庫
- shell查詢prometheus資料Prometheus
- 二叉查詢樹(查詢、插入、刪除)——C語言C語言
- 樹狀資料結構儲存方式——查詢篇資料結構
- 海關資料查詢系統「查詢平臺分類」
- 資料庫全表查詢之-分頁查詢優化資料庫優化
- SQL查詢的:子查詢和多表查詢SQL
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- ES 20 - 查詢Elasticsearch中的資料 (基於DSL查詢, 包括查詢校驗match + bool + term)Elasticsearch