你的位置:首页 > 软件开发 > 数据库 > 第2周 页_SQL Server 中数据存储的基本单位

第2周 页_SQL Server 中数据存储的基本单位

发布时间:2015-04-29 21:02:38
上周通过探讨SQL Server如何执行一个查询奠定了基础。我也在那里提到页是8kb的缓存。今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节。 页是SQL Server的基础,在SQL Server里一切都与页有关。当我们想 ...

        上周通过探讨SQL Server如何执行一个查询奠定了基础。我也在那里提到页是8kb的缓存。今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节。

        页是SQL Server的基础,在SQL Server里一切都与页有关。当我们想提高查询性能时,我们可以减少SQL Server指定查询所需页的读取。在第二个月当我们讨论索引时,我们发现其实索引的结构也是由页组成的。当你不知道页是什么的时候,你就不能对SQL Server进行调优和故障排除。

数据页结构

在SQL Server中页的大小始终是8kb的大小,页有不同的类型:数据页,索引页,系统页等等。今天我们对在SQL Server存储我们表数据的数据页进行更多细节的学习。一个数据页总是由三个部分组成:

  1. 页头(Page Header)
  2. 数据区(Payload)
  3. 行偏移数组(Row Offset Array)

在SQL Server中页头的始终是96 byte长(不受页的类型约束),这里存储着像Page ID,Object ID等页的大体信息。数据区是页中最有意思的部分,因为我们的记录就存在那里。SQL Server给你8192 bytes(8kb)的空间,其中8096 bytes是给数据区的。因此计算多少条记录刚好可以填满一个页是个很容易的事,直接拿8096除以记录长度即可(这里包含至少7 bytes的内部行开销)。当你把结果取整下,你就得到在一页里你可以存放多少条记录。

SQL Server中对页操作必须是整页读或写的,因此我们的目标总是希望在一页里存放尽可能多的记录。SQL Server不能从你存储里读页的一部分,或者把页的一部分写入存储。I/O操作始终最少都是在页级别完成的。

最后在页的底部你会看到被称作行偏移数组的东西。行偏移数组用2 bytes存储着每条记录在页里位置的偏移量。第一条记录始终开始与96的偏移,刚好紧接着页头。下图可以给你刚才介绍的数据页结构的概况认识。

第2周 页_SQL Server 中数据存储的基本单位

深入解析数据页

我们来看一个简单的表定义:

 

 1 CREATE TABLE Customers 2 ( 3  FirstName CHAR(50) NOT NULL, 4  LastName CHAR(50) NOT NULL, 5  Address CHAR(100) NOT NULL, 6  ZipCode CHAR(5) NOT NULL, 7  Rating INT NOT NULL, 8  ModifiedDate DATETIME NOT NULL, 9 )10 GO

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:第2周 页_SQL Server 中数据存储的基本单位

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。