SQL数据库监控问题?

SKY_JProGrammer 2011-10-25 11:12:58
各位大哥大姐好~最近在做项目时发现一个问题,SQL的存储过程执行的很慢时在监控会有记录,记录当时的存储过程耗时多少。但是为什么在同一个监控进程ID中会出现多条记录。
比如说
一个存储过程名为 "S_xinxiSelectbyID" 的统计查询执行时间为40秒,SPID为136。
但是在同一个SPID下还会有多个记录执行的语句为空白。并且耗时非常大经常是存储过程执行时间的1倍或则几倍时间。

请问这个问题该如何解决?如何才能把这个存储过程执行完以后的后续执行时间去掉。
...全文
48 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 roy_88 的回复:]
SQL code
SELECT TOP 100 execution_count / datediff(second, creation_time, last_execution_time) AS [Execute Count Per Second], execution_count,

total_logical_reads /execution_count AS [Avg Log……
[/Quote]

这个是什么?
查询前100的平均逻辑读和物理读?
中国风 2011-10-25
  • 打赏
  • 举报
回复
sys.dm_exec_query_stats--傳回快取查詢計劃的彙總效能統計資料。
execution_count--計劃從上次編譯以來被執行的次數。
中国风 2011-10-25
  • 打赏
  • 举报
回复
SELECT     TOP 100 execution_count / datediff(second, creation_time, last_execution_time) AS [Execute Count Per Second], execution_count,

total_logical_reads /execution_count AS [Avg Logical Reads],

total_elapsed_time /execution_count AS [Avg Elapsed Time],

db_name(st.dbid) as [database name],

object_name(st.objectid, st.dbid) as [object name],

SUBSTRING(st.text, (qs.statement_start_offset / 2) + 1, ((CASE statement_end_offset WHEN - 1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset) / 2) + 1) AS statement_text

FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st

WHERE execution_count > 100

ORDER BY 1 DESC;l
唐诗三百首 2011-10-25
  • 打赏
  • 举报
回复
应该是CPU的多线程处理,其中时间最长的就是客户端看到的执行时间.

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧