数据库的页和区51CTO博客 - 牛牛娱乐

数据库的页和区51CTO博客

2019年04月26日14时29分04秒 | 作者: 金鹏 | 标签: 数据,数据库,分配 | 浏览: 553

 

现在给我们介绍SQL Server 2008 R2怎么存储数据

SQL Server 中数据存储的基本单位是页。为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间能够从逻辑上划分红页(从 0 到 n接连编号)。磁盘 I/O 操作在页级履行。也就是说,SQL Server 读取或写入一切数据页。

区是八个物理上接连的页的调集,用来有用地办理页。一切页都存储在区中。

 


在 SQL Server 中,页的巨细为 8 KB。这意味着 SQL Server 数据库中每 MB 有 128 页。每页的最初是 96 字节的标头,用于存储有关页的体系信息。此信息包括页码、页类型、页的可用空间以及具有该页的目标的分配单元 ID。

下表说明晰 SQL Server 数据库的数据文件中所运用的页类型。

页类型

内容

Data

当 text in row 设置为 ON 时,包括除 text、ntext、image、nvarchar(max)、varchar(max)、varbinary(max) 和 xml 数据之外的一切数据的数据行。

Index

索引条目。

Text/Image

大型目标数据类型:

  • text、 ntext、image、nvarchar(max)、varchar(max)、varbinary(max) 和xml 数据。

数据行超越 8 KB 时为可变长度数据类型列:

  • varchar、nvarchar、varbinary 和 sql_variant

Global Allocation Map、Shared Global Allocation Map

有关区是否分配的信息。

Page Free Space

有关页分配和页的可用空间的信息。

Index Allocation Map

有关每个分配单元中表或索引所运用的区的信息。

Bulk Changed Map

有关每个分配单元中自最终一条 BACKUP LOG 句子之后的大容量操作所修正的区的信息。

Differential Changed Map

有关每个分配单元中自最终一条 BACKUP DATABASE 句子之后更改的区的信息。

留意

日志文件不包括页,而是包括一系列日志记载。

在数据页上,数据行紧接着标头按次序放置。页的结尾是行偏移表,关于页中的每一行,每个行偏移表都包括一个条目。每个条目记载对应行的第一个字节与页首的间隔。行偏移表中的条目的次序与页中行的次序相反。

大型行支撑

行不能跨页,可是行的部分能够移出行地点的页,因此行实践或许非常大。页的单个行中的最大数据量和开支是 8,060 字节 (8 KB)。可是,这不包括用 Text/Image 页类型存储的数据。包括 varchar、nvarchar、varbinary 或 sql_variant 列的表不受此束缚的束缚。当表中的一切固定列和可变列的行的总巨细超越束缚的 8,060 字节时,SQL Server 将从最大长度的列开端动态将一个或多个可变长度列移动到 ROW_OVERFLOW_DATA 分配单元中的页。每逢刺进或更新操作将行的总巨细增大到超越束缚的 8,060 字节时,将会履行此操作。将列移动到 ROW_OVERFLOW_DATA 分配单元中的页后,将在 IN_ROW_DATA 分配单元中的原始页上保护 24 字节的指针。假如后续操作减小了行的巨细,SQL Server 会动态将列移回到原始数据页。


区是办理空间的基本单位。一个区是八个物理上接连的页(即 64 KB)。这意味着 SQL Server 数据库中每 MB 有 16 个区。

为了使空间分配更有用,SQL Server 不会将一切区别配给包括少数数据的表。SQL Server 有两种类型的区:

  • 一致区,由单个目标一切。区中的一切 8 页只能由所属目标运用。

  • 混合区,最多可由八个目标同享。区中八页的每页可由不同的目标一切。

一般从混合区向新表或索引分配页。当表或索引增长到 8 页时,将变成运用一致区进行后续分配。假如对现有表创立索引,而且该表包括的行足以在索引中生成 8 页,则对该索引的一切分配都运用一致区进行。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章