欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » SQLServer教程 » 正文

运行的MSSQL系统突然变慢了,应该如何去排查

创建时间:2013年12月20日 15:23  阅读次数:(6456)
分享到:
排除硬件问题,系统变慢了,首先你需要确认是某个特定的操作变慢了,还是所有的操作都变慢。
1,如果是某个特定的操作变慢了。
1.1,是应用程序变的问题变慢了,还是数据库的问题造成的。 
这个可以用Tier Interaction Profiler 来确定,可以看到哪些function call花费了最多的时间。
http://blogs.msdn.com/b/habibh/archive/2009/06/30/walkthrough-using-the-tier-interaction-profiler-in-visual-studio-team-system-2010.aspx

如果通过上面的方法发现花费时间最多的function call,来判断那个function call是不是对数据库的访问。
如果不是,那就是应用程序的问题了,这个可以对function进行code review或者直接用WINDBG跟SOS来profiling,这部分的东西是非常复杂的,
也不在本主题的讨论访问,所以不在此做过多的解释。
如果是某个访问数据库的方法占了很大时间,那就查看对应的T-SQL或者SP。

然后就是对特定的SP或者T-SQL进行诊断了。
这个也分为2个类型,
一个是SP或者T-SQL本身的问题,这个就是对它们自身进行调优。
另一个是外界因素造成的,比如说LOCK,或者CPU资源或者是memory资源造成的,
这个我们可以profiling特定的SP或者T-SQL,看看他们时间到底花在哪里,这个时候就要用XE来查找到底瓶颈在哪里,比如说在等待什么资源,具体的你可以看一下:
下面链接中103楼的做法, 看看时间到底花在哪里,然后做相应的操作。
http://bbs.csdn.net/topics/390505826?page=2

2,如果做什么操作都很慢。
首先要看一下,应用程序服务器的资源情况,看看它们是不是很紧张,比如说CPU,memory,IO的相关情况。
然后用ETW看查看,到底是哪些方法花了很多的时间,具体的参考。
http://msdn.microsoft.com/en-us/magazine/cc163437.aspx
http://www.codeproject.com/Articles/570690/Application-Analysis-with-Event-Tracing-for-Window
找到那些方法后,然后你就知道是应用程序的问题还是DB的问题。

如果是DB的问题,
第一步:就是查那些占用了资源最多的那些TOP的SP\T-SQL.
这个可以通过下面的whitepaper查找。
Troubleshooting Performance Problems in SQL Server 2008
http://download.microsoft.com/download/D/B/D/DBDE7972-1EB9-470A-BA18-58849DB3EB3B/TShootPerfProbs2008.docx
第二步:在解决了上面的那些TOP的SQL之后,可以再查一下wait STATISTICS的问题。这个也是个很复杂的话题,具体的可以参考
http://download.microsoft.com/.../Performance_Tuning_Waits_Queues.doc?

当然还有些问题是程序的出现死锁,或者锁之类的,或者死循环,这些都可以用WINDBG找出来。

最后,无论是你应用程序程序员还是DBA,如果你善用一些debugging或者profiling工具,比如说WINDBG或者ETW,
那几乎可以troubleshooting任何你以为很奇怪或者很难解决的问题。
来源:http://bbs.csdn.net/topics/390671415
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 43+61=? 的结果(结果是:104)
结  果: