2

我试图了解 Sql Server 数据页的结构。这是 Dmitri Korotkevitch 的 Pro SQL Server Internals 的屏幕截图, 在此处输入图像描述 我创建了 3 个表:

  1. 1 个 INT 列
  2. 2 个 INT 列
  3. 4 个 INT 列

所有列都不为空

然后我跑

dbcc traceon(3604);
dbcc page
(
'DbName' 
,1 /*File ID*/
,368 /*Page ID*/
,3 /*Output mode: 3 - display page header and row details */
);

并获得以下 Fdata 长度值:

  1. 带 1 列 - 0800 = 0008 = 8 = 4 + 1x4
  2. 有 2 列 - 0c00 = 00c0 = 12 = 4 + 2x4
  3. 有 4 列 - 1400 = 0014 = 20 = 4 + 4x4

在这里,我列出了“输出中的值”=“交换值”=“十进制值”

已编辑:据我了解,它是 Const_4 + Nbr_of_Columns * Size_Of_Columns。这个 Const_4 是什么?

4

1 回答 1

2

图中的“Fdata length”是行的定长数据部分结束的偏移量。

在您的示例中,数据占用 4、8 和 16 个字节,并且该行以另外 4 个字节开始(1+1+2:状态位 A,状态位 B,Flength),因此存储的“结束”(偏移量)固定长度数据分别为 8、12 和 20。

于 2017-07-20T08:11:06.997 回答