首页 > 其他 > 详细

32-探索堆表创建聚集索引后物理存储位置是否改变

时间:2020-06-10 11:38:06      阅读:73      评论:0      收藏:0      [点我收藏+]

一、总结

1、这里说的堆表指的是组织结构是堆结构的表,也就是没有聚集索引的表(创建聚集索引后,组织结构变成了B树结构)。

2、这里演示的数据库环境是SQLServer2016 RTM。

 

二、研究步骤

1、准备数据

--1.创建堆表

create table person(id int not null,name nvarchar(50),age int)

--2.随机插入7条数据
insert into customer..person values(9,‘jack‘,20)
insert into customer..person values(4,‘rose‘,16)
insert into customer..person values(7,‘wade‘,37)
insert into customer..person values(2,‘jame‘,27)
insert into customer..person values(6,‘black‘,16)
insert into customer..person values(1,‘feide‘,36)
insert into customer..person values(8,‘ted‘,19)
insert into customer..person values(3,‘hude‘,49)

技术分享图片

 

 2、查看数据顺序

注:发现数据和插入时的顺序一致

技术分享图片

 

 3、查看该表具体的page页

dbcc ind(customer,person,-1)

注:由下图可以看出该表所在的数据页编号是232

技术分享图片

 

 4、查看该页上具体的数据

dbcc traceon(3604)
dbcc page(customer,1,232,2)

注:从下面的结果可以看出在page页里面的存储时按照我们插入表的顺序存储的

技术分享图片

 

 技术分享图片

 

 5.我们在使用winhex打开库的数据文件查看一下该页的数据存储

我们知道SQLServer数据库每页存储的大小是8kb,也就是8192字节,所以page为232的偏移量的开始位置就是232*8192=1900544

该页的结束位置为234*8192-1=1916927(下一页的开始偏移量减去1就是该页偏移量的结束位置)

(1)先把数据库脱机(脱机后才能打开mdf文件,要不然是正在使用状态)

alter database customer set offline

技术分享图片

 

 

(2)双击winhex.exe

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 (3)ALT+G查看具体的偏移量位置

注:由下图也可以看到数据在数据文件里也是按照我们插入的顺序写入的

技术分享图片

 

 技术分享图片

 

 6.准备开始创建聚集索引

(1)先联机数据库

alter database customer set offline

(2)创建id的聚集索引

create clustered index id_index on person(id)

技术分享图片

 

7.查看表数据,发现已经有顺序了

技术分享图片

 

 8、再次去查看数据页,看看物理上是否是顺序存储的

技术分享图片

 

 9.查看280页的数据

发现顺序是按照id的大小排序的

技术分享图片

 

 10.再次用winhex查看280页的数据

开始偏移量:280*8192 = 2293760

结尾偏移量:281*8192-1=2301951

发现数据在280页里也是按照id的值顺序存储的

技术分享图片

 

 11.再次查看原来的232页的数据

技术分享图片

 

 疑问:发现232的数据还是存在的,并且还是按照我们插入表的顺序存储的,但是我们通过select语句查该表的数据的时候,是去280页查找的,那这个232页的数据留着是做什么用的呢?是因为数据空间还没没有释放吗?

12.收缩一下数据文件,再次查看232页看是否还存在

技术分享图片

 

 

技术分享图片

 

 注:收缩完数据文件,查看232页的数据,还是存在的

 

32-探索堆表创建聚集索引后物理存储位置是否改变

原文:https://www.cnblogs.com/jialanyu/p/13083957.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!