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

数据库 SQL Server
本文我们主要从物理结构上介绍了SQL Server数据库的优化,即对SQL Server数据库存储页的操作来优化数据库,希望能够对您有所帮助。

我们知道,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数据库从存储页方面的优化措施就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. SQL Server数据库多表关联汇总查询的问题解决
  2. 设置SQL Server数据库AWE机制使其支持大内存
  3. SQL Server 2008数据库被标记为可疑的解决方法
  4. SQL Server数据库中FOR XML AUTO的使用详解续
  5. SQL Server使用UNION代替OR提升查询性能的实例
责任编辑:赵鹏 来源: 博客园
相关推荐

2011-07-26 15:47:01

SQL Server数外键约束

2011-07-28 09:49:04

Oracle数据库服务Oracle实例

2011-04-01 13:21:26

SQL ServerOracle数据库查询优化

2021-11-23 09:45:26

架构系统技术

2011-08-22 12:01:36

SQL Server代码优化

2009-07-06 21:20:34

SQL Server数

2018-03-30 13:59:22

数据库SQL语句性能优化

2010-04-15 13:01:25

Oracel数据库

2011-08-03 17:43:53

MySQL数据库外键约束

2022-07-04 10:51:27

数据中台数据仓库

2010-07-01 14:18:09

SQL Server数

2011-03-28 17:12:36

sql server数优化

2010-07-08 17:33:21

SQL Server数

2010-07-06 16:24:53

SQL Server数

2010-06-28 14:56:24

优化SQL Serve

2009-01-27 21:00:00

服务器数据库SQL Server

2009-03-11 15:40:20

2010-07-15 17:28:50

SQL Server

2023-11-29 09:53:29

数据库迁移SQL Server

2011-08-04 15:55:25

SQL Server数
点赞
收藏

51CTO技术栈公众号