SQL Server概要分析我应该怎么做呢?

时间:2010-10-27 18:53:47

标签: sql-server-2005 profiling

所以我之前使用过SQL Profiler,我知道如何查看我的LINQ查询在幕后进行的操作。现在,我们正在识别可能需要更多时间并且需要优化或具有一些索引的查询。

所以,现在当我在分析器中查看我的LINQ查询并行运行时,我不关心很多其他数据和查询。无论如何,探查器或其他工具可以按最大时间的顺序对查询进行排序....这样我就可以优化它了。我想运行我的应用程序,然后在分析器中以某种方式查看该批次中最糟糕的查询。

任何人都可以指导或指导我尝试使用sql server 2005进行性能分析更有用。此外,欢迎任何有关进行性能分析的想法或建议或最佳方法。感谢。

3 个答案:

答案 0 :(得分:3)

这是一个关于DMV的查询,它将列出有关CPU时间的一些详细信息的查询。一旦您查明查询,就会在Include Actual Execution Plan设置为开启的情况下运行,以查看查询流以及您可能需要编入索引的位置。

select  
    highest_cpu_queries.plan_handle,  
    highest_cpu_queries.total_worker_time, 
    q.[text] 
from  
    (select top 50  
        qs.plan_handle,  
        qs.total_worker_time 
    from  
        sys.dm_exec_query_stats qs 
    order by qs.total_worker_time desc) as highest_cpu_queries 
    cross apply sys.dm_exec_sql_text(plan_handle) as q 
order by highest_cpu_queries.total_worker_time desc

这是一个很好的article发现性能问题。

答案 1 :(得分:2)

对于“快速和脏”的最差查询列表,您可以使用以下内容:

SELECT TOP 10
    total_worker_time/execution_count AS Avg_CPU_Time
        ,execution_count
        ,total_elapsed_time/execution_count as AVG_Run_Time
        ,(SELECT
              SUBSTRING(text,statement_start_offset/2,(CASE
                                                           WHEN statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max), text)) * 2 
                                                           ELSE statement_end_offset 
                                                       END -statement_start_offset)/2
                       ) FROM sys.dm_exec_sql_text(sql_handle)
         ) AS query_text 
FROM sys.dm_exec_query_stats 
ORDER BY 3 DESC

请参阅:http://msdn.microsoft.com/en-us/library/ms189741%28SQL.90%29.aspx

答案 2 :(得分:1)

您可以在启动Profiler时更改跟踪属性。选择Events Selection选项卡,然后单击Column Filters按钮。在Edit Filter对话框中,选择Duration。然后单击大于或等于并输入值。该值以毫秒为单位,因此如果要查看持续时间超过5秒的查询,请输入5000.

您也可以在此处查看其他过滤器,并根据需要配置持续时间值。