3
过去几天我的数据库服务器的CPU负载持续很高。在调查这个问题,我一直在寻找在目前执行的请求使用查询在数据库服务器上使用CPU的查询
SELECT session_id,
request_id,
Db_name(database_id),
start_time,
status,
command,
Substring(txt.TEXT, (statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN Datalength(txt.TEXT)
ELSE statement_end_offset
END
- statement_start_offset)/2) + 1) AS statement_text,
wait_type,
wait_time,
blocking_session_id,
percent_complete,
cpu_time,
reads,
writes,
logical_reads,
row_count
FROM sys.dm_exec_requests
CROSS APPLY sys.Dm_exec_sql_text([sql_handle]) AS txt
WHERE session_id <> @@SPID
AND session_id > 50
大多数时候,我发现,除了从应用服务器发送的常规查询,也有这似乎是消费这些怪异的小号查询一小部分CPU时间。 例如
它们不会出现在SQL事件探查器。任何人都有想法他们是什么以及应该怎样处理他们?
命令列告诉它它是一个SELECT语句。但看看Statement_Text栏 - 它只是说S.没有别的。然后看看cpu_time,logical_reads等等。这个S似乎并没有出现在SQL分析器中。我想知道如何进一步调试。 – shashi
尝试捕获整个'txt.text'。很确定你的'子串'代码会被证明是错误的。 –
我使用Derek Dieter的sp_who3进行此类调查。你的子串代码与他有点不同。 :http://sqlserverplanet.com/dmv-queries/a-better-sp_who2-using-dmvs-sp_who3/ – brian