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