大型数据库——索引存储结构

Posted 小姚同学要继续加油呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大型数据库——索引存储结构相关的知识,希望对你有一定的参考价值。

索引存储结构:

请创建一个包含一个表的数据库,该表至少2列。在此表中插入至少5行数据。在该表中创建一个聚集索引和非聚集索引,通过查询SYSINDEXES系统表相关信息和DBCC命令,显示你的数据表存储页和非聚集索引的存储页(非聚集索引用PAGE命令查看存储页时,用3号查看方式)。附上作业过程中使用的所有命令代码、截图、相关文字说明、作业心得体会等。

创建数据库和表并插入数据:


在该表中创建一个聚集索引和非聚集索引:

CREATE UNIQUE CLUSTERED INDEX IX_ID ON TABLE_wuhaoyang(ID_wuhaoyang)
GO
CREATE UNIQUE NONCLUSTERED INDEX IX_NAME ON TABLE_wuhaoyang(NAME_wuhaoyang)
GO

查询SYSINDEXES系统表:

标准查询存储页面格式:

DBCC PAGE(dbname,file id, page id,方式)

indid=1,说明为聚集索引;indid≥2,说明为非聚集索引。
先看聚集索引的first信息,最后4位对应的就是file id,也就是这里的0x500000000100,字节交换后为0001,转换为十进制为1,所以这里的file id就是1。前面4位对应的是page idpage id对应的是0x500000000100,字节交换后为0050,转换为十进制为80,所以这里的page id就是80(DBCC接收的参数都是十进制数)。

显示表的聚集索引页面如下:

同理,看非聚集索引的first信息,最后4位对应的就是file id,也就是这里的0x6D0000000100,字节交换后为0001,转换为十进制为1,所以这里的file id就是1page id对应的是0x6D0000000100,字节交换后为006D,转换为十进制为109,所以这里的page id就是109(DBCC接收的参数都是十进制数)。

1、下图中EMPLOYEE表存储的页码是(36)(请直接填写十进制数字)。正确答案: 0024H->36D

2、下图中EMPLOYEE表中聚集索引根节点存储的页码是(34)(请直接填写十进制数字)。正确答案: 0022H->34D

3、下图中EMPLOYEE表中非聚集索引根节点存储的页码是(56)(请直接填写十进制数字)。
正确答案: 0038H->56D

以上是关于大型数据库——索引存储结构的主要内容,如果未能解决你的问题,请参考以下文章

大型网站核心技术

在现有的大型表上创建列存储索引的最有效方法?

数据结构-查找-线性索引查找(对于无序顺序存储,建立索引快速查找)

Mysql存储结构

学习笔记——数据库存储结构:页聚集索引非聚集索引

MySQL索引及优化存储引擎和底层数据结构