![重启后SQL Server变得很慢](https://linux22.com/image/513123/%E9%87%8D%E5%90%AF%E5%90%8ESQL%20Server%E5%8F%98%E5%BE%97%E5%BE%88%E6%85%A2.png)
我已经在 stackoverflow 上发布了这个帖子,但有人暗示我,在 serverfault 上我可能会更幸运。我们在 Windows Server 2008 上使用 SQL Server 2005。该服务器有 48 GB RAM。SQL Server 配置为使用 40 GB RAM。只托管一个数据库(大约 70 GB)。除了 SQL Server 之外,唯一的应用程序是将客户端连接到数据库的应用程序服务器。
现在我们遇到了以下问题:
重启服务器后,我们的性能非常好。服务器占用了允许的 40 GB RAM,然后运行速度极快。但大约 4 周后,系统变得越来越慢。语句的执行速度(在分析器中可见)正在缓慢提升。但我看不出服务器上出了什么问题。
- CPU 使用率约为 20%
- I/O 似乎也没有问题
- 进程监视器也没有显示有奇怪的应用程序或类似的东西。
- Eventlog 也没有有趣的消息
- 没有开放交易或阻止可查看
- 我们的应用中不使用光标
我们已经尝试了以下方法,但没有效果:
使用语句删除缓存
DBCC FreeProcCache DBCC FREESYSTEMCACHE('ALL') DBCC DropCleanbuffers
重新启动了我们正在使用的应用服务器。
- 重新启动 SQL Server 服务
但除了重启整个服务器之外,其他都无济于事。有什么想法吗?
答案1
打电话给微软。说真的 - 这很有趣。除非你忽略了什么,否则这种事不应该发生。几周后就不会发生了。
我们可以假设服务器在一天之内就会变热,对吗?例如:充分利用其资源并处理正常负载(冷服务器速度较慢,因为缓存显然是空的)。
任何类型的缓存都不应在几周后发生。我可以理解存储过程中不良查询计划带来的污染会在几天后出现,但不能理解 4 周后出现的情况……
...除了:您是否在每月间隔内执行与服务器变慢的时间相关的某件事?
肯定有人需要查看服务器的完整性能指标,然后花一些时间找出答案。PSS(专业支持服务)的不错案例 ;)
如何进行索引重组?
我会寻找您启动的每月(30 天间隔)进程,然后由于某种原因导致服务器运行缓慢。