我正在尝试计算sql_variant用于存储固定长度数据类型的存储空间。
对于我的测试,我创建了一个包含两列的表:
Key int identitiy(1,1) 主键 值 sql_variant
我添加了一行int类型的值为 1 的行,我使用 DBCC PAGE 检查了行的大小,结果是 21 个字节。
使用估计聚集索引的大小我有:
空位图 = 3 Fixed_Data_Size = 4(键列 int) Variable_Data_Size = 2 + 2 + 4(带 int 的值列)
Row_Size = 4 + 8 + 3 + 4 = 19 字节
为什么行占用 21 个字节?我的计算中缺少什么?
我使用 int 列而不是 sql_variant 对表进行了相同的分析,DBCC PAGE 报告的使用字节数为 15,这与我的计算相符:
空位图 = 3 Fixed_Data_Size = 8(键列 int,值列 int) 变量数据大小 = 0
Row_Size = 4 + 8 + 3 = 15 字节