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。因此,这里的问题是每次执行都会在计划缓存中生成新计划。
每当出现问题时,我们都会通过添加/删除一些过滤器作为临时解决方法来调整内部代码,但我们在这里寻找的是找到解决此问题的最终解决方案。
我们做过的事情:
要做的事情:
表分区 - 我正在考虑创建过滤索引。如果您遇到任何这些问题,请告诉我您的想法或建议。
在 SQL Sentry 中启用 Fragmentation Manager 会导致 SQL 实例运行缓慢?是否需要额外的资源?