IT技术网www.itjs.cn

当前位置:首页 > 数据库 > SQl Server > 从物理结构上谈一谈SQL Server数据库的优化

从物理结构上谈一谈SQL Server数据库的优化

发布时间:2011-08-24 17:55 来源:未知

我们知道,SQL Server中数据存储的基本单位是。为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 读取或写入所有数据页。

平时在通过SQL Server Profiler 或者打开Statistics IO 选项时看到物理读,逻辑度的单位都是页。

在SQL Server 中,页的大小为8KB。这意味着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 语句之后更改的区的信息。

在数据页上,数据行紧接着标头按顺序放置。页的末尾是行偏移表,对于页中的每一行,每个行偏移表都包含一个条目。每个条目记录对应行的第一个字节与页首的距离。行偏移表中的条目的顺序与页中行的顺序相反。

数据行存储在页上,超出页大小如此。

2个原则:

表设计:Row 要占用尽可能短的长度,占用少的空间,让一个page上存储更多的row,这样在相同的读次数下,获取到的数据就更多了。

查询:Select的时候,别动不动就来个*,因为当row 中有Image,text等,或者本身变长字段vchar等加起来的长度超过了8k,就会需要去 

ROW_OVERFLOW_DATA 中去读取一次。增加了读的开销。当然从网络等开销来说也不建议用* 。

关于SQL Server数据库从存储页方面的优化措施就介绍到这里了,希望本次的介绍能够对您有所收获!