Dav*_*and 8 sql-server sql-server-2005
大家有没有遇到过以下情况,有没有找到解决办法:
我们网站后端的很大一部分是 MS SQL Server 2005。每隔一周或两周,该网站的运行速度就会变慢 - 我看到在 SQL 中完成查询所需的时间越来越长。我有一个我喜欢使用的查询:
USE master
select text,wait_time,blocking_session_id AS "Block",
percent_complete, * from sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 order by start_time asc
Run Code Online (Sandbox Code Playgroud)
这是相当有用的......它提供了当时针对您的 SQL 服务器运行的所有内容的快照。好消息是,即使您的 CPU 由于某种原因被锁定在 100% 并且活动监视器拒绝加载(我相信你们中的一些人已经在那里)这个查询仍然返回,您可以看到什么查询正在杀死您的数据库。
当我在 SQL 开始变慢的时候运行它或活动监视器时,我没有看到任何导致问题的特定查询 - 它们的运行速度都变慢了。如果我重新启动 MS SQL 服务,那么一切都很好,它会加快速度 - 一两个星期,直到它再次发生。
我能想到的一切都没有改变,但这只是几个月前开始的......想法?
- 添加
请注意,当发生这种数据库速度下降时,无论我们是每小时获得 100K 页面浏览量(一天中的繁忙时间)还是每小时 10K 页面浏览量(缓慢时间),查询都需要比正常情况更长的时间来完成。服务器并没有真正承受压力 - CPU 不高,磁盘使用率似乎没有失控......感觉像是索引碎片或类似的东西,但这似乎不是案件。
至于粘贴我上面粘贴的查询的结果,我真的做不到。上面的查询列出了执行任务的用户的登录名、整个查询等。我真的不想在线分发我的数据库、表、列和登录名的名称:)...我可以告诉您当时运行的查询是正常的,我们网站一直运行的标准查询,没有任何异常。
——3月24日
距离上次重启已经过去了大约两周。我做了几处更改:我发现了一些查询,其中我们大量使用了完全不必要的临时表,并且让我们的开发人员改变了他们的工作方式。我将一些不断(缓慢但肯定)增长的数据库的大小调整为适合其增长的智能大小。我调整了所有内容的自动增长设置,使其更加智能(它们都设置为 1MB 增长)。最后我稍微清理了 MSDB。我们进行日志传送,并且真的不需要保留数年和数年的备份点,我已经编写了一些脚本,将其保留到只有几个月的时间。我会继续更新这个帖子,因为现在判断问题是否已经解决还为时过早。
我们找到了。事实证明,这实际上是一个网络服务器,其中一个应用程序池出现了问题。它会被卡住一遍又一遍地运行同一组查询(这恰好处理临时表)。它只会不断循环并最终导致 SQL 服务器悲伤。一旦发现这个有问题的机器/应用程序池并“放下”,一切就都解决了。
归档时间: |
|
查看次数: |
19716 次 |
最近记录: |