限制SQL Server 2008R2中查询的CPU /内存使用率

BeginnerDBA 05/07/2018. 2 answers, 487 views
sql-server sql-server-2008-r2 performance resource-governor

我们有一个来自应用程序团队的AD-HOC进程,它从SQLserver中一个常用的OLTP数据库获取数据,将数据迁移到MongoDB中。

在性能测量过程中,我们可以看到,从SQL Server获取数据时,他们的部分运行速度在CPU中几乎达到了一个小时,几乎达到了60-80%。

因此,为了减少这种影响,我们正在考虑使用资源调控器来限制CPU /内存资源。 我从来没有使用RG,但阅读博客似乎可以是理想的。

请建议您是否可以实现此目标,或根据您的经验提出更好的建议。

上面的活动是每月在SQL Server 2008R2中的5 TB数据库上获取大约8千万个数据的每月一次

2 Answers


SQLRaptor 05/07/2018.

简短的回答是'是'。 您可以使用RG来限制该进程的CPU消耗。 请注意,RG仅适用于SQL Server 2008 R2的企业版和数据中心版。 了解如何使用RG: 资源调控器操作指南主题,使用Microsoft文档优秀的演练

较长的回答 - RG没有解决根本原因,它是帮助症状的乐队帮助,并且使其他用户对疾病的干扰减少。 如果我在你的地方,在诉诸RG解决方案之前,我会投入一些时间来尝试优化过程本身。 虽然“访问8000万行”并不意味着太多,只是访问数据行不应该消耗大量的CPU。 我的经验一次又一次地证明,需要花费数小时的许多流程可以缩短到几分钟(并且在某些情况下减少到几秒钟),并且可以减少比原始资源少数量级的资源。 优化工作不仅应该包括适当的索引,模式调整,查询语法和计划调查等技术性问题,还应该包括更高级别的流程体系结构和流程评估,它是否会进行全面更新或增量更新? 你有多少次访问相同的表格? 是否有很多临时表参与? 太多的步骤? 也许一些冗余的工作正在完成? 如果您提供有关该过程的更多详细信息,以及为什么需要这么多CPU,此处的人员将很乐意为您提供帮助。

当然,不能保证你会成功,最终你最终可能会诉诸使用RG,但恕我直言,这项工作非常值得。


由于您考虑在操作窗口期间限制资源,因此我了解您担心此查询对活动事务的影响(因为它是您的OLTP数据库)。

因此有可能:

  1. 使用快照并让您的查询使用此(作为单独的数据库),这可以在查询窗口期间隔离争用问题;

  2. 将查询移出“小时”。 看起来这个查询不是时间敏感的,所以可能在上午的凌晨发生,例如。

  3. 更改计划,以便此查询每周运行而不是每月运行一次。 这样你在这个过程中就没有那么'严厉'的影响了。
  4. 在一个月内将数据构建到单独的表/数据库/服务器中。 那么查询可以改为打这些表。
  5. 如果您的版本足够新,请使用最快的存储子系统中的内存表或临时表。

达拉斯

Related questions

Hot questions

Language

Popular Tags