쿼리 실행시마다 실행 계획, 쿼리 등이 db 서버 메모리에 저장된다.
재기동 전까지 데이터는 누적되어 아래 쿼리로 고부하 쿼리가 어떤쿼리 인지 찾을수 있다.
cpu 스파이크를 찾는건 불가능 하나, 단순하게 비용이 높은 쿼리는 조회 가능하다.
SELECT object_name (b. objectid),R .cpu_time,
S.host_name ,S. login_name, C. query_text,P .query_plan
FROM sys .dm_exec_requests as r
JOIN sys .dm_exec_sessions AS S ON S.session_id= R .session_id
CROSS APPLY sys. dm_exec_sql_text( r.sql_handle ) AS B
CROSS APPLY SYS. DM_EXEC_QUERY_PLAN(r .plan_handle) AS P
OUTER APPLY
(
SELECT top 1
case when sql_handle IS NULL then ''
else ( substring(B .text,( qs.statement_start_offset +2)/ 2,(
case when qs .statement_end_offset= -1then len(convert (nvarchar( MAX),B .text))* 2 else qs.statement_end_offset +10 end
- qs.statement_start_offset )/2))
end as query_text
FROM sys .dm_exec_query_stats AS qs WHERE qs.query_hash= R. query_hash
) AS C
WHERE R.session_id> 50and R.database_id> 1
ORDER BY R .cpu_time DESC
'SQL Server' 카테고리의 다른 글
SQL Server 통계 Stream 생성 샘플 쿼리 (0) | 2023.01.10 |
---|---|
JSON Insert Update Create Index (0) | 2023.01.10 |
SQL Server 테이블 정보 조회(sp_help / sp_column) (0) | 2023.01.06 |
SQL Server 정규식(clr) (0) | 2023.01.06 |
SQL Server USE HINT( 'hint_name' ) (1) | 2022.12.25 |