3
DB 서버가 지난 며칠 동안 CPU로드가 계속 높아지고 있습니다. 이 조사하는 동안, 나는 대부분의 시간에 나는 떨어져 응용 프로그램 서버에서 전송되는 일반 쿼리에서 소비하는 것 같다 이상한 S 쿼리가있는 것을 알게 쿼리DB 서버에서 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' 전체를 캡쳐 해보십시오. 확실히 당신의'substring' 코드가 잘못되었을 것으로 확신합니다. –
나는이 유형의 조사를 위해 Derek Dieter의 sp_who3를 사용합니다. 하위 문자열 코드는 다른 코드와 약간 다릅니다. : http://sqlserverplanet.com/dmv-queries/a-better-sp_who2-using-dmvs-sp_who3/ – brian