首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >的平均CPU为2-3%,但有时会停留在100%。

的平均CPU为2-3%,但有时会停留在100%。
EN

Database Administration用户
提问于 2012-02-15 18:28:57
回答 1查看 551关注 0票数 4

跳到总结版

的最后一段

我正在处理Server 2008 R2 Express安装。我有一个相当复杂的存储过程。根据输入,它可能返回6500条记录。

每条记录都是一个网络订单。它返回80个字段。另外,还有一些分组来总结SPROC本身的行项信息和复杂的过滤。这个查询几乎总是在2秒内运行。

有时,当查询以最小的过滤量运行,从而导致所有6500行返回时,数据库服务器将进入某种错误状态。

CPU峰值达到100%,并停留在那里。有时它会在几分钟后退出这种状态,有时它会停留在那里,直到我重置SQL Service为止。

如果在此错误条件下重置SQL Service,则再次运行查询,通常可以在不重复错误条件的情况下运行它100次。然而,随着数据库的老化(和扩展),这种错误情况变得越来越普遍。

,这是我知道的

  • 我已经分析了执行计划,并且可能在适当的表中有适当字段的索引。
  • 这些索引是每晚重建的。
  • 平均而言,错误状态持续的时间比过去长。
  • 在刚刚发生此错误情况时(在重置SQL服务之前),重新构建索引似乎会有所帮助。我把这个包括在这里是因为它可能与内部统计数据有关?通常情况下,我现在只需要重置sql服务。
  • 据我所知,执行计划看起来相对健康。您可以在这里看到计划中最繁忙的部分:http://i.imgur.com/bwAFn.png注意:由于3个下划线项目,我显示了这个部分。
    • 我已经尝试过将这3项中的2项更改为散列联接,但它实际上似乎进一步减慢了它的速度。

  • 在更强的硬件上,我没有遇到这个错误条件。出于各种原因,我需要保留有限的硬件生产版本。
  • DB属性:

我的托管资源相当少.

  • ~2.5 Ghz单芯
  • 1.7 GB RAM
  • 30 GB驱动器,6GB免费

尽管如此,DB服务器几乎一直都很“高兴”,除非这个特定的SPROC触发了这个错误条件。

我真的不能在这里展示我的代码,尽管我很想。

我想知道是否触发了某种内部维护?Server是否有可能进入无限循环?(我在代码中不使用循环)。

是否有一套很好的调试技巧来处理这种情况:?

有时,当查询运行时,它会触发一种状态,Server在其中使用100%的CPU,时间为90秒,时间为20+分钟。98%的情况下,当查询运行时,根本没有问题,但这98%随着时间的推移正在慢慢缩小。

2012更新

  • 我设置了一个每晚重新构建所有数据库索引的作业。
  • 自动关闭已设置为False

这在很大程度上缓解了问题。不过,我仍有一些问题,但却经常出现约5%的问题,但我仍未解决。

EN

回答 1

Database Administration用户

发布于 2012-02-15 18:49:32

这可能与您的AutoClose设置有关。您发现的几乎所有资源都建议将此设置为OFF

本质上,它会自动关闭连接,但是它会导致很多问题,因为它做得不好。它可以并确实引起各种神秘的性能问题。

这是巴克·伍迪写的关于推理的帖子.

下面是另一个服务器的博客文章,介绍了它引发问题的情况.

第一步应该关闭启动,然后测试一段时间。

有人请求取消该功能。,但看起来他们会把它留在里面。

票数 7
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/13130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档