【问题标题】:8078 bytes in 8060 B datapage (SQL Server)?8060 B 数据页(SQL Server)中有 8078 个字节?
【发布时间】:2010-09-23 13:16:07
【问题描述】:

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 个字节和每个(varchar、nvarchar)8000 个字节的限制?
How do you get to limits of 8060 bytes per row and 8000 per (varchar, nvarchar) value?

【问题讨论】:

  • 这个问题的写法和格式让人难以阅读

标签: sql-server tsql sql-server-2008 data-structures data-storage


【解决方案1】:

长答案短,限制是每行 8060 字节,但每页 8096 字节。您链接的文章中的行的行大小约为 4000 字节,因此它们远低于每行的限制。但是,这并不能回答一个页面上有多少这样的行。

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

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

如果您对本文中的表格进行计算,您会发现第一个表格的物理行大小为 4048 字节,这恰好是页面 8096 限制的一半。

【讨论】:

  • 谢谢,我赞成你的回答。请看我的问题(主帖中的更新 2)
【解决方案2】:
  • 最大行大小为8060字节
  • 在这种情况下,有 两行行,每行 4039 字节

【讨论】:

  • 谢谢,我赞成你的回答。请查看我的问题(在我的主帖中更新 2)
  • @vgv8:我已经回答了你的另一个问题
猜你喜欢
  • 2017-12-22
  • 1970-01-01
  • 2020-12-03
  • 2017-09-20
  • 2013-03-09
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
相关资源
最近更新 更多