B樹索引的由來
1970年,由波音公司的Rudolf.Bayer和Ed.mccreight提出了一種適用於外查找的樹,它是一種平衡的多叉樹,稱爲B樹(或B-樹、B_樹)。
B的含義尚無定論,通常認爲是Boeing,Bayer,balanced數據庫
下載地址優化
SQL優化 講課blog
下載地址索引
http://files.cnblogs.com/files/lyhabc/SQL%E4%BC%98%E5%8C%96%E8%AE%B2%E8%AF%BE.rarget
PPT有不對的地方,多多拍磚o(∩_∩)o it
索引結構原理
ffile
f下載
一頁只能存儲8060字節實際用戶數據
表只有一列,而且數據類型爲int的話,能夠存儲2015個值
f
f
f
f
f
頁拆分
一個頁裝不下全部條目,頁拆分過程:爲索引分配兩個額外的頁
現有的rootpage 降低成一個葉級頁。SQL Server獲取索引頁一半數據,把這一半數據移動到一個新分配的頁面。另外一個新頁則放在索引結構的頂部,成爲新的rootpage,整個過程的最後一步是獲取每一個葉級頁的第一個條目,並將那些條目寫入新建立的rootpage中
f
rootpage的2015行對應於中間級頁面的2015個頁,每一箇中間級頁面也有2015個條目,它們對應於葉級的2015個頁,最後加一個用於觸發新層級的數據行(2015 3次方+1)
在成長到超過80億多行後,才須要掃描三個索引頁
rootpage已經到了存儲極限,他不能容納2016個條目,由於那會使他超過最大容許的8060字節,所以,SQL Server會再次經歷一次「頁拆分」過程,之前的rootpage變成一箇中間級頁,同時建立一個新的中間級頁。之前的rootpage分一半條目給新建的中間級頁。同時,兩個中間級頁的第一個條目都寫入新的rootpage
因此SQL Server是B*樹
f
f
空間索引
空間數據用一個二維座標系統定義,索引用B樹構建,而B樹是一個線性結構
f
因爲幾何平面是無限的,因此不能爲全部可能的二維空間都必定一個B樹
f
交換分區的原理
假設一個表只有一個字段int類型 4字節,那麼
一個頁面實際數據8060字節除以4字節 得出一個頁面能夠存儲2015行數據
8060/4=2015
扇出值就是2015
一個父節點能夠有2015個孩子
二級
2015*2015=4060225 行
2016個頁面
三級
2015*2015*2015=8181353375 行
4060226個頁面
f
SQL Server2008數據庫技術內幕P165
BOOT PAGE裏面的dbi_firstSysIndexes項指向sys.sysallocunits數據字典表
f