所以我之前使用过SQL Profiler,我知道如何查看我的LINQ查询在幕后进行的操作。现在,我们正在识别可能需要更多时间并且需要优化或具有一些索引的查询。
所以,现在当我在分析器中查看我的LINQ查询并行运行时,我不关心很多其他数据和查询。无论如何,探查器或其他工具可以按最大时间的顺序对查询进行排序....这样我就可以优化它了。我想运行我的应用程序,然后在分析器中以某种方式查看该批次中最糟糕的查询。
任何人都可以指导或指导我尝试使用sql server 2005进行性能分析更有用。此外,欢迎任何有关进行性能分析的想法或建议或最佳方法。感谢。
答案 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.
您也可以在此处查看其他过滤器,并根据需要配置持续时间值。