SQL Server中的数据写在8K(8192B)的页面中,每个页面的数据为8060字节,其余的都是开销(系统信息)。

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

每页理解8060 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)?
How do you get to limits of 8060 bytes per row and 8000 per (varchar, nvarchar) value?

2 回复  |  直到 14 年前
    1
  •  4
  •   Pondlife    14 年前

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

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

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

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

        2
  •  2
  •   gbn    14 年前
    • 最大值 大小为8060字节
    • 在这种情况下,有 每行4039字节