Sql 服务器页面结构。什么是 Fdata 长度?
Sql Server page structure. What is Fdata length?
我正在尝试了解 Sql 服务器数据页的结构。这是来自 Pro SQL Server Internals by Dmitri Korotkevitch 的截图
我创建了 3 个表:
- 1 INT 列
- 2 INT 列
- 4 INT 列
所有列都不是 NULL
那我运行
dbcc traceon(3604);
dbcc page
(
'DbName'
,1 /*File ID*/
,368 /*Page ID*/
,3 /*Output mode: 3 - display page header and row details */
);
并获取以下 Fdata 长度值:
- 有 1 列 - 0800 = 0008 = 8 = 4 + 1x4
- 有 2 列 - 0c00 = 00c0 = 12 = 4 + 2x4
- 4 列 - 1400 = 0014 = 20 = 4 + 4x4
这里我列出了 "value in the output" = "swapped value" = "decimal value"
已编辑:
据我了解是Const_4 + Nbr_of_Columns * Size_Of_Columns。这是什么Const_4?
图中的"Fdata length"是该行定长数据部分结束的偏移量。
在您的示例中,数据占用 4、8 和 16 个字节,并且该行以另外 4 个字节开始(1+1+2:状态位 A、状态位 B、Flength),因此 "end" 存储定长数据的(offset)分别为8、12、20。
我正在尝试了解 Sql 服务器数据页的结构。这是来自 Pro SQL Server Internals by Dmitri Korotkevitch 的截图
- 1 INT 列
- 2 INT 列
- 4 INT 列
所有列都不是 NULL
那我运行
dbcc traceon(3604);
dbcc page
(
'DbName'
,1 /*File ID*/
,368 /*Page ID*/
,3 /*Output mode: 3 - display page header and row details */
);
并获取以下 Fdata 长度值:
- 有 1 列 - 0800 = 0008 = 8 = 4 + 1x4
- 有 2 列 - 0c00 = 00c0 = 12 = 4 + 2x4
- 4 列 - 1400 = 0014 = 20 = 4 + 4x4
这里我列出了 "value in the output" = "swapped value" = "decimal value"
已编辑: 据我了解是Const_4 + Nbr_of_Columns * Size_Of_Columns。这是什么Const_4?
"Fdata length"是该行定长数据部分结束的偏移量。
在您的示例中,数据占用 4、8 和 16 个字节,并且该行以另外 4 个字节开始(1+1+2:状态位 A、状态位 B、Flength),因此 "end" 存储定长数据的(offset)分别为8、12、20。