sql-server – MS SQL Server会随着时间的推移而变慢吗?

前端之家收集整理的这篇文章主要介绍了sql-server – MS SQL Server会随着时间的推移而变慢吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
你有没有经历过以下的人,并找到了解决方案:

我们网站后端的很大一部分是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

这是非常有用的…它提供了当时正在针对您的sql服务器运行的所有内容的快照.有什么好处的是,即使你的cpu由于某种原因被挂起100%并且Activity Monitor拒绝加载(我确定你们有些人一直在那里),这个查询仍然会返回,你可以看到什么查询正在杀死你的数据库.

当我在sql开始减速的时候运行它或Activity Monitor时,我没有看到任何导致问题的特定查询 – 它们全部运行速度较慢.如果我重新启动MS sql服务,那么一切都很好,它会加速 – 持续一到两周,直到它再次发生.

我能想到的一切都没有改变,但几个月前刚刚开始……想法?

添加

请注意,当这个数据库减速发生时,如果我们每小时(繁忙时间)获得100K页面查看或者每小时10K页面查看(慢速时间),则查询都需要比正常时间更长的时间来完成并不重要.服务器并没有真正承受压力 – cpu不高,磁盘使用率似乎没有失控……感觉就像索引碎片或类似的东西但似乎不是案件.

至于粘贴上面粘贴的查询结果,我真的不能这样做.上面的查询列出了执行任务的用户登录,整个查询等等.我真的不想在网上分发我的数据库,表格,列和登录名称:)…我可以告诉你,当时运行的查询是我们网站的常规标准查询,一直运行,没有任何规范.

– 3月24日

自上次重启以来已经过去两周了.我做了一些更改:我发现了一些查询,我们正在大量使用临时表,完全没有必要,并让我们的开发人员改变了他们的工作方式.我将一些不断(缓慢但肯定)不断增长的数据库的大小调整为智能大小以适应它们的增长.我调整了所有内容自动增长设置,以便更加智能(它们全部设置为1MB增长).最后我清理了一点MSDB.我们做日志传送,并且真的不需要保留数年和数年的备份点,我写了一些脚本,只保留了几个月.我会不断更新这个帖子,因为现在判断问题是否已解决还为时过早.

解决方法

我们找到了.原来,它实际上是一个Web服务器,其中一个应用程序池出现问题.它会一遍又一遍地运行同一组查询(碰巧在临时表中处理).它只会循环和循环,最终导致sql服务器感到悲伤.一旦发现这个违规的机器/应用程序池并“放下”,一切都已解决.

猜你在找的MsSQL相关文章