公司内部培训SQL Server传统索引结构PPT分享

公司内部培训SQL Server传统索引结构PPT分享


B树索引的由来
1970年,由波音公司的Rudolf.Bayer和Ed.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。
B的含义尚无定论,一般认为是Boeing,Bayer,balanced

下载地址

http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E7%B4%A2%E5%BC%95%E7%BB%93%E6%9E%84.ppt

 

SQL优化 讲课

下载地址

http://files.cnblogs.com/files/lyhabc/SQL%E4%BC%98%E5%8C%96%E8%AE%B2%E8%AF%BE.rar

PPT有不对的地方,多多拍砖o(∩_∩)o 

索引结构

f

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

原文地址:https://www.cnblogs.com/lyhabc/p/4737882.html