代码之家  ›  专栏  ›  技术社区  ›  AdaTheDev

SQL Server索引-创建后初始性能降低

  •  2
  • AdaTheDev  · 技术社区  · 15 年前

    这是我在进行性能分析时注意到的。

    每次测试之前,我都会清除数据和执行计划缓存。

    有没有一种方法可以让我在第一次运行时监控导致这种情况的原因?

    2 回复  |  直到 15 年前
        1
  •  4
  •   martin clayton egrunin    15 年前

    一种可能是违约 fill factor “零”的游戏即将开始。

    这意味着索引中没有空间容纳插入内容。插入时,需要在索引中拆分页面,这会添加一些空白空间来存储新的索引信息。执行更多插入时,索引中会创建更多空间。过了一段时间,拆分的速度会下降,因为插入的页面没有完全填满,所以不需要拆分。需要拆分页面的插入比不需要拆分的插入成本更高。

    可以在创建索引时设置填充因子。这是使用空间和不同操作性能之间的经典权衡。

    我将加入一些链接 Sybase ASE docs ,因为它们编写得很好,并且大多数也适用于SQL Server。

        2
  •  1
  •   Cade Roux    15 年前

    2) 在表中插入10k行

    3) 在表中再插入10k行

    第三步比第二步快10倍?

    新索引是什么类型的?不是聚集索引,对吗?因为在聚集索引上插入将导致非常不同的行为。此外,这两个插入的配置文件是否存在显著差异,因为根据聚集索引,它们将具有不同的行为。通常,它要么没有聚集索引,要么聚集在递增键上。