小编Rob*_*n16的帖子

存储过程运行缓慢,但过去表现良好

http://pastebin.com/index.php?e=1我知道您可能在职业生涯中多次或至少听说过一次这个问题,但这已经成为我们环境中巨大的性能问题。

数据库大小:压缩后1 TB表大小:800 GB,超过十亿条记录

应用程序通常查询存储过程,当他们运行报告时,它通常调用存储过程并最终查询巨大的视图(它有接近 900 列,视图中的一个表是上面提到的 800GB 表)。

环境概述:

SQL 2014 企业版,Always On 无表分区(计划今年实施) Windows 2012 标准内存:512,490 GB 分配给 SQL Server CPU:16 核

问题:当报表运行时,它调用存储过程,存储过程最终根据用户选择的动态参数生成动态 SQL。因此,这里的问题是每次执行都会在计划缓存中生成新计划。

每当出现问题时,我们都会通过添加/删除一些过滤器作为临时解决方法来调整内部代码,但我们在这里寻找的是找到解决此问题的最终解决方案。

我们做过的事情:

  1. 我们已经根据该大表中每个索引的样本百分比修改的行设置了一个不同的自定义更新统计作业。
  2. 由于时间的原因,我们不会在这个巨大的表上重建索引,但我们会根据页数进行重组。由于数据倾斜,根据 SQLSkills 的建议,在问题表(大表)上创建过滤统计(我们正在与 SQL Skills 团队并行工作)

要做的事情:

表分区 - 我正在考虑创建过滤索引。如果您遇到任何这些问题,请告诉我您的想法或建议。

performance sql-server-2014 query-performance

3
推荐指数
1
解决办法
3059
查看次数

在 SQL Sentry 中启用碎片管理器

在 SQL Sentry 中启用 Fragmentation Manager 会导致 SQL 实例运行缓慢?是否需要额外的资源?

sql-server

1
推荐指数
1
解决办法
207
查看次数