MySQL之B-tree學習
1,節點:
a,每個節點最多可以有m個子節點
b,根節點若非葉子節點,至少2個子節點,最多m個子節點
c,每個非根,非葉子節點至少[m/2]子節點或叫子樹([]表示向上取整),最多m個子節點
2,關鍵字:
a,根節點的關鍵字個數1~m-1
b,非根非葉子節點的關鍵字個數[m/2]-1~m-1
3、所有的葉子結點都位於同一層
4、每個結點中關鍵字從小到大排列
5,葉子結點不包含關鍵字
6,效能分析:
設B-樹包含N個關鍵字,因此有N+1個葉子結點,葉子都在第L層。因為根至少有兩個孩子,因此第二層至少有2個結點。除根和葉子外,其它結點至少有┌m/2┐個孩子,因此在第三層至少有2*┌m/2┐個結點,在第四層至少有2*(┌m/2┐^2)個結點,...,在第L層至少有2*(┌m/2┐^(L-2) )個結點,於是有:
N+1 ≥ 2*┌m/2┐^(L-2)
即: L ≤ log┌m/2┐((N+1)/2 )+2
這個公式保證了B-樹的查詢效率是相當高的。
如果要計算資料檢索時間複雜度的話,還得考慮每個節點進行關鍵字的查詢(二分法)
一般資料庫採用的是b-tree的變體:b+tree
和b-tree相比,區別在於:
1,每個節點關鍵字個數和子節點個數相等。
2,b+tree的每個非葉子節點只有key,沒有data,而且葉子節點沒有指標。
一般資料庫會對b+tree進行最佳化,比如在葉子節點上增加了順序訪問指標,提高區間查詢效率。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-767504/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 十四、Mysql之B-TreeMySql
- MySQL學習之索引MySql索引
- MySQL學習之explainMySqlAI
- MySQL之檢視學習MySql
- mysql學習之-小技巧MySql
- MySQL探索(一):B-Tree索引MySql索引
- 學習MYSQL之ICP、MRR、BKAMySql
- Mysql 學習篇之原始碼安裝mysqlMySql原始碼
- MySQL學習之flush(刷髒頁)MySql
- mysql學習之-邏輯架構MySql架構
- MySQL學習基礎之起航篇MySql
- MySQL入門學習之——innodb lockMySql
- 【MySQL(1)| B-tree和B+tree】MySql
- MySQL學習之change buffer 和 redo logMySql
- MySQL優化學習筆記之索引MySql優化筆記索引
- MySQL優化學習筆記之explainMySql優化筆記AI
- MySQL 學習之索引篇和查詢MySql索引
- Docker學習之搭建MySql容器服務DockerMySql
- MySQL入門學習之——實戰XtraBackupMySql
- MySQL入門學習之——實戰mysqldumpMySql
- Amoeba for MySQL學習研究之注意事項MySql
- MySQL學習筆記之命令總結MySql筆記
- MySQL入門學習之——MySQL錯誤解決彙總MySql
- MySQL入門學習之——原始碼安裝mysql5.5MySql原始碼
- MySQL入門學習之——mysql與oracle死鎖對比MySqlOracle
- jmeter學習指南之操作 mysql 資料庫JMeterMySql資料庫
- MySQL 5.7 學習心得之安全相關特性MySql
- MySQL學習之全域性鎖和表鎖MySql
- MySQL學習之MVCC原理和當前讀MySqlMVC
- mysql學習之-字符集選定,修改。MySql
- MySQL學習筆記之約束條件MySql筆記
- 學習MySQLMySql
- MySQL 學習MySql
- Mysql學習MySql
- MySQL Hash索引和B-Tree索引的區別MySql索引
- Mysql學習筆記---MySQL叢集架構之擴容方案MySql筆記架構
- mysql學習筆記之備份與恢復MySql筆記
- 菜鳥也玩mysql之學習筆記篇MySql筆記