1. 程式人生 > >數據庫索引數據結構分析

數據庫索引數據結構分析

sql 分別是 通過 key http 基本 innodb mys 指向

數據庫索引數據結構分析

為什麽要有B樹?

  1. 計算機有一個局部性原理,就是說,當一個數據被用到時,其附近的數據也通常會馬上被使用。所以當你用紅黑樹的時候,你一次只能得到一個鍵值的信息,而用B樹,可以得到最多M-1個鍵值的信息。這樣來說B樹當然更好了。
  2. 另外一方面,同樣的數據,紅黑樹的階數更大,B樹更短,這樣查找的時候當然B樹更具有優勢了,效率也就越高。

一、B樹

B樹的結構要求:

1)根節點至少有兩個子節點
2)每個節點有M-1個key,並且以升序排列
3)位於M-1和M key的子節點的值位於M-1 和M key對應的Value之間
4)其它節點至少有M/2個子節點
5)所有葉子節點都在同一層

技術分享圖片

二、B+樹

B+樹是B-樹的變體,也是一種多路搜索樹:
1.其定義基本與B-樹同,除了:
2.非葉子結點的子樹指針與關鍵字個數相同;
3.非葉子結點的子樹指針P[i],指向關鍵字值屬於[K[i], K[i+1])的子樹(B-樹是開區間);
5.為所有葉子結點增加一個鏈指針;

6.所有關鍵字都在葉子結點出現;

技術分享圖片

三、B*樹

B*樹是對B+樹進行的又一次的升級。在B+樹的非根和非葉子結點再增加指向兄弟的指針;

技術分享圖片

四、MySQl中索引的數據結構

1、MyISAM引擎

技術分享圖片
技術分享圖片

MyISAM中有兩種索引,分別是主索引和輔助索引,在這裏面的主索引使用具有唯一性的鍵值進行創建,而輔助索引中鍵值可以是相同的。MyISAM分別會存一個索引文件和數據文件。它的主索引是非聚集索引。當我們查詢的時候我們找到葉子節點中保存的地址,然後通過地址我們找到所對應的信息。

2、InnoDB引擎

技術分享圖片

InnoDB索引和MyISAM最大的區別是它只有一個數據文件,在InnoDB中,表數據文件本身就是按B+Tree組織的一個索引結構,這棵樹的葉節點數據域保存了完整的數據記錄。所以我們又把它的主索引叫做聚集索引。而它的輔助索引和MyISAM也會有所不同,它的輔助索引都是將主鍵作為數據域。所以,這樣當我們查找的時候通過輔助索引要先找到主鍵,然後通過主索引再找到對於的主鍵,得到信息

數據庫索引數據結構分析