索引存储原理

存储基础

SQL Server内部使用了大量的结构来存储和组织数据。

SQL Server使用页来存储一切。当数据文件分配给数据库的时候,所有可用空间都会被分割成页,一页8KB (8,192 字节) ,页从0开始编号,依次加1.SQL Server与数据文件的IO交互,最小单位是页。

页有3个关键部分组成,the page header, records, and the offset array 页头、记录集。

页头有96字节,记录了页的元数据信息,

偏移数组,36字节,记录了页内行数据的起始地址指针。

每当添加一行数据,如下:

页的基础结构是一样的,但是使用方式却不同,例如数据页、索引结构、大对象。

扩展

扩展是另一个基础的结构,就是数据文件内,必须物理连续8页构成的组。有2中类型的扩展,混合和单一。

创建一个 表时,数据量小于8页,页可以被分配给其他对象,直到大于8页,才会变成一个表的数据。

 页类型会关联在页上指明当前的用途,有哪些?

• File header page
• Boot page
• Page Free Space (PFS) page
• Global Allocation Map (GAM) page
• Shared Global Allocation Map (SGAM) page
• Differential Changed Map (DIFF) page
• Minimally Logged (ML) page
• Index Allocation Map (IAM) page
• Data page
• Index page
• Large object (Text and Image) page

有一些页类型是固定的,

 

注意:日志文件没有使用“页架构”,只有数据文件才会这样使用。

 使用了组织结构来排序数据,如下:

• Heap 堆
• Balanced-tree (B-tree)
• Columnar

这些结构会映射为特殊的索引类型。

原文地址:https://www.cnblogs.com/PerfectBeauty/p/13132472.html