4

SQL Server 中的数据以 8K (8192 B) 页的形式写入,每页有 8060 个字节用于数据,其余部分是开销(系统信息)。

不过,据我所知,最近的文章 [1] 给出了代码示例,说明 8078 字节的数据适合一个页面。

在理解每页 8,060 B 时我错过了什么?

我在 x86 SQL Server 2008 R2 上验证了代码...


更新:

我是否看到有关 [1] 后续行动的答案?我很遗憾我没有将其标记为(对我)有帮助并立即发表评论......我只是想在回复之前自己进行更多调查......


更新2:

我发布了子问题 [2]

[1]
表设计如何影响您的 SQL Server 性能?
http://sqlserver-training.com/how-table-design-can-impact-your-sql-server-performance/-

[2]
如何达到每行 8060 个字节和每行 8000 个(varchar、nvarchar)的限制?
您如何达到每行 8060 个字节和每个(varchar、nvarchar)值 8000 个字节的限制?

4

2 回答 2

4

长答案简而言之,限制是每行 8060 字节,但每页 8096 字节。您链接的文章中的行的行大小约为 4000 字节,因此它们远低于每行的限制。但是,这并不能回答页面上可以容纳多少这样的行的问题。

请参阅联机丛书中的“估计堆的大小”:

http://msdn.microsoft.com/en-us/library/ms189124.aspx

如果您对文章中的表进行计算,您将看到第一个表的物理行大小为 4048 字节,这恰好是页面 8096 限制的一半。

于 2010-09-23T13:46:25.367 回答
2
  • 最大大小为 8060 字节
  • 在这种情况下,有行,每行 4039 字节
于 2010-09-23T13:48:59.557 回答