【问题标题】:What is the performance impact of exceeding the 8060 bytes per row in SQL Server?超过 SQL Server 中每行 8060 字节的性能影响是什么?
【发布时间】:2014-02-26 21:05:59
【问题描述】:

如果我创建一个每页超过 8060 字节的 SQL Server 表,对于超过此限制的列,查询是否会受到很大影响?

如果一行占用整个 8060 字节,即使它是空的,我也不太明白。如果是这样,查询性能是否会仅针对超出限制的特定行或所有行受到影响?

【问题讨论】:

    标签: sql sql-server performance


    【解决方案1】:

    对于第一个问题:

    是的,它可能会影响性能。在一个表中组合 varchar、nvarchar、sql_variant 和 varbinary,总大小大于 8,060 字节会导致将数据重新分配到另一页。 虽然这会影响更新,但我不确定它对于读取数据是否太重要。在内部,SQL Server 会在新页面中放置一个指向重新分配的数据部分的指针,所以我猜这是相当快的操作。

    由您(DBA/开发人员)来分析和预测表中此类行的百分比。如果它发生得太频繁,请考虑将大列移动到单独的表中。 使用 sys.dm_db_index_physical_stats 了解您的数据发生了什么。

    第二个问题:

    我猜你问的是某些列(尤其是 varchar)为空的情况。您可以使用sparse columns“帮助”SQL Server 来节省空间 另外,我推荐this 文章。

    【讨论】:

    • 我们做了一些测试,你是完全正确的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多