SQL Server内幕之数据页

数据页是富含已添加到数据库表中的用户数量的结构。

ca88官网,如前所述, 数据页有三种, 每个都以差别的格式存储数据。

SQL server 有行内数据页、行溢出数据页和 LOB 数据页。

与 SQL server 中的所有其余门类的页一样, 数据页的轻重缓急固定为 8 KB
或8192字节。

它们由三主要组件组成: 页面页眉、数据行和行偏移量数组, 如图6-4 所示。

ca88官网 1

 

页标题

 

如图6-4 所示, 页标题占据每个数据页的前96个字节
(为数量、行费用和行偏移保留8096个字节)。表6-5
列出了检查页标题时体现的有的新闻。

ca88官网 2

 

行内数据的数据行

 

页标题后边是储存表实际数据行的区域。单个数据行的最大尺寸为8060字节的行内数据。

行还足以在单身的页上存储行溢出和 LOB 数据。

在给定页上囤积的行数按照表结构和储存的数码而生成。

怀有所有固定长度列的表始终可以储存每页相同的行数;

可变长度行可以根据输入数据的实际上尺寸, 存储尽可能多的行。

维持行长更短可以使越来越多行适合页面, 从而减弱 i/o
并增添所需数据在缓存中的可能。

 

行偏移量数组

 

行偏移量数组是2字节项的块, 每个条目表示相应数据行最先的页面上的偏移量。

每行在这一个数组中都有一个2字节的条目 (正如前边所研商的,
当您读书每行所需的10个开发字节时)。

即使如此这一个字节没有存储在数额行中, 但它们确实会潜移默化适合页面的行数。

 

行偏移量数组提示页上行的逻辑顺序。

比如说, 假诺表具有聚集索引, SQL server 将按聚集索引键的顺序存储这么些行。

这并不代表行按聚集索引键的顺序物理地蕴藏在页面上。

反而, 偏移量数组中的插槽0引用聚集索引键顺序中的第一行, 插槽1引用第二行,
依此类推。

正如你在自我批评实际上页面时所看到的那样,
那几个行的情理地点可以置身页面的其余岗位。

 

翻看数据页

 

能够使用 DBCC 页命令查看数据页的始末, 

那允许你查看数据库中任何给定页的页标题、数据行和行偏移表。

唯有系统管理员才能应用 DBCC 页。

可是, 由于平时不须要查阅数据页的始末, 由此在 SQL server 文档中找不到有关
DBCC 页的新闻。

只是, 借使您想行使它, 下边是语法:

DBCC PAGE ({dbid | dbname}, filenum, pagenum[, printopt])

 

DBCC 页面命令包涵表6-6 中彰显的参数。

清单6-4 中的代码和结果突显来自 DBCC 页的示范输出, 其 printopt 值为1。

请留心, DBCC TRA主管N (3604) 提示 SQL server 将结果回到给客户端。

假定没有此 traceflag, 则不会为 DBCC 页命令归来输出。

 

ca88官网 3

正如所见到的, DBCC 页的输出分为四要害部分:
缓冲区、页标题、数据和偏移量表 (实际上是偏移量数组)。

缓冲区部分显得有关给定页的缓冲区的消息。

此上下文中的缓冲区是管理页的内存结构,
本节中的新闻仅在页处于内存中时才相关。

 

从 DBCC 页的 “输出” 页标题部分显得页上拥有标题字段的多寡。

(表6-5 突显了半数以上那一个字段的含义。数据节包罗每行的消息。

运用具有 printopt 值1或3的 DBCC 页表示插槽地方,
即每行的6个表存储257、页上的行的偏移量和行的长短。

行数据分为三片段。

 

左列提醒展现数据所在行内的字节地点。

中级有些含有存储在页面上的实在数据, 每五列呈现多个十六进制数字。

最左边的列包罗数据的 ASCII 字符表示方式。 此列中唯有字符数据是可读的,
纵然可能会来得某些其他数据。

“偏移量表” 部分显得页面末尾的行偏移量数组的情节。

 

在 DBCC 页的输出中, 您可以看来此页包蕴23行, 第一行 (由插槽0指令)
从偏移量 1585 (0x631) 先河。

实质上存储在页面上的首先行实际上是6行,
而行偏移量数组中的偏移量为96。printopt 值为1的 DBCC 页突显 “插槽编号”
顺序中的行, 就算可以从各种插槽的偏移量中看出,
也不是在页面上实在存在行的顺序。

假如应用 printopt 值为2的 DBCC 页, 则会看到页的具有8096个字节 (标头之后)
的转储, 按它们存储在页面上的顺序排列。

 

相关文章