确定SQL Server的性能问题(Identifying SQL Server Performan

2019-08-16 18:28发布

我们有我们的SQL Server 2005群集上零星,随机查询超时。 我自己使用它的一些应用程序,所以我在调查中帮忙。 在观看定期OL”性能监视器的CPU%的时候,你肯定能看到它挂出来。 但是,SQL活动监视器只给出了一个过程,它使用不正确的是什么,然后,或在特定的时间内累计使用的CPU和IO时间。 也许我可以使用分析器和运行跟踪,但这个星团非常频繁使用我怕我会寻找大海捞针。 我是不是找错了树?

有没有人有在这种环境中追踪昂贵的查询/处理一些好的方法呢?

Answer 1:

这会给你的平均CPU时间的前50个报表,查看这里的其他脚本: http://www.microsoft.com/technet/scriptcenter/scripts/sql/sql2005/default.mspx?mfr=true

SELECT TOP 50
        qs.total_worker_time/qs.execution_count as [Avg CPU Time],
        SUBSTRING(qt.text,qs.statement_start_offset/2, 
            (case when qs.statement_end_offset = -1 
            then len(convert(nvarchar(max), qt.text)) * 2 
            else qs.statement_end_offset end -qs.statement_start_offset)/2) 
        as query_text,
        qt.dbid, dbname=db_name(qt.dbid),
        qt.objectid 
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY 
        [Avg CPU Time] DESC


Answer 2:

我已经找到了性能仪表板报告是非常有帮助的。 他们是一组由微软提供的定制RS报告。 你只需要您的客户端PC上运行安装程序,然后运行该SQL Server实例的setup.sql。

在此之后,右键单击一个数据库(无所谓哪一个)在SSMS并转到报告 - >自定义报表。 导航并选择其中的\ Program Files文件\ Microsoft SQL Server的\ 90个\ TOOLS \ PerformanceDashboard默认文件夹中位于performance_dashboard_main.rdl。 您只需要操作一次。 第一次后,就会在报告列表中显示出来。

主仪表板视图会显示CPU的利用率随着时间的推移,等等。 你可以偶尔刷新。 当你看到一个秒杀,只需点击栏上的图表得到它背后的详细数据。



Answer 3:

我们使用Quest的焦点产品。 显然,这是在时间和金钱投资,它可能不会帮助你在短期内,但如果你有一个大的SQL环境,这是非常有用的。



Answer 4:

作为亚科夫说,典型负载下运转几分钟探查,并将结果保存到表中,这将允许您运行对结果的查询使它更容易被发现的任何资源占用查询。



Answer 5:

探查可能看起来像一个办法“大海捞针”,但它可能打开了一些有用的东西。 尝试运行它了几分钟,而数据库是典型负载下,并查看是否有任何疑问立场在某种程度上采取了太多时间或占用资源。 虽然这样的情况可能会指向一些一般性的问题,也有可能涉及到一些具体的问题,有一个或两个地点,造成全线表现非常差,其胡来够在某些情况下。



Answer 6:

运行探查器和过滤器对于需要超过一定数量的读取更多的查询。 对于应用我的工作,那花了超过5000的任何非报告查询读取值得看一下。 您的应用程序可能有不同的阈值,但这个想法是一样的。



Answer 7:

该实用程序通过厄兰Sommarskog赫然是有用的。

这是您添加到数据库中的存储过程。 每当你想看到什么疑问是积极的,并得到锁,块等的好照片,我经常使用它时,事情似乎粘住了运行它。



文章来源: Identifying SQL Server Performance Problems