首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库服务器100%,没有任何理由

数据库服务器100%,没有任何理由
EN

Stack Overflow用户
提问于 2009-12-02 10:21:04
回答 2查看 145关注 0票数 2

我们有一个Windows 2003 (x64)作为数据库服务器运行。数据库配有32 of内存

通常,数据库内存使用率(任务管理器)在5-10%之间。然而,有时数据库突然上升到100%,并保持在那里,随机和没有任何变化的代码或执行。

所有的研究,无论是由我支付的,都指向了一个单一的存储过程。当数据库为100%时,禁用此过程将使数据库恢复正常。

这听起来很明显,但这是奇怪的部分。

对存储过程进行了优化,内存使用量(来自执行计划)为0.01,这是非常好的。通常,执行存储过程将立即返回结果集。我还支付了一个RackSpace狂热的DBA来查看这个问题,他说他认为存储过程没有问题。

现在是多余的线位。

运行SP的instantaneous.

  • When

  • 是100%,运行SP,在SP上继续执行几分钟,将DB发送到SP被启用的5-10%.

  • Although,DB是100%,如果我打开一个新的查询窗口并从SP运行准确的代码,但作为查询而不是SP,结果会立即返回again

因此,虽然乍一看,SP需要优化,但SP中的实际代码并不是一个问题。

我绝望了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-02 10:36:24

执行计划可以根据SP的输入参数和结果集的大小而更改。

您可以尝试将WITH RECOMPILE添加到存储过程中,以便为每个调用获得一个新的执行计划。它将使其速度稍微慢一点,但有时SQL Server会对大多数查询执行异常糟糕的计划,在这些情况下重新编译会有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2009-12-02 10:35:44

Profiler:

server提供了一个名为Profiler的很好的工具,它可以让您实时查看在服务器上运行的查询。你应该运行分析器,找出到底发生了什么,然后用它找出罪魁祸首。

查询有4种度量:内存、CPU、读、写。占用大量这些语句(单独或合并)并以高频率调用的SQL语句是进行优化的最佳选择。

运行配置文件并捕获输出后,您应该能够识别要优化的项。然后可以运行SQL语句,检查执行计划并对其执行必要的优化。

(编辑:添加内容)

可能不是语句本身不是最优的,而是一些锁/阻塞/死锁可能导致这种情况。可能在服务器上同时运行的其他东西正在占用此SP所需的资源,并导致CPU激增。

阅读Profiler:

http://msdn.microsoft.com/en-us/library/ms187929.aspx

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

https://stackoverflow.com/questions/1831978

复制
相关文章

相似问题

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