[MS-SQL] CPU 사용량 많은 쿼리 조회
2023. 3. 3. 12:56ㆍSQL/MS-SQL
728x90
반응형
안녕하세요 이번 포스팅은 MSSQL에서 CPU사용량이 많은 쿼리를 확인하는 방법을 공유하고자 합니다.
--CPU 소모량이 높은 쿼리 분석(간략 정보)
SELECT TOP 20
[Average CPU used] = total_worker_time / qs.execution_count
,[Total CPU used] = total_worker_time
,[Execution count] = qs.execution_count
,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END -
qs.statement_start_offset)/2)
,[Parent Query] = qt.text
,DatabaseName = DB_NAME(qt.dbid)
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY [Total CPU used] DESC, [Average CPU used] DESC;
GO
--CPU 소모량이 높은 쿼리 분석(상세 정보)
SELECT TOP 20
[Average CPU used] = total_worker_time / qs.execution_count
,[Total CPU used] = total_worker_time
,[Last CPU used] = last_worker_time
,[MAX CPU used] = max_worker_time
,[Execution count] = qs.execution_count
,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)
,[Parent Query] = qt.text
,DatabaseName = DB_NAME(qt.dbid)
,qs.creation_time
,qs.last_execution_time
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY [Average CPU used] DESC;
먼저 최근에 사용한 쿼리 중 CPU를 가장 많이 사용한 것들에 대한 리스트입니다. CPU사용량이 많은 것들에 대한 쿼리들은 쿼리 재튜닝으로 개선하는 것이 좋을 거 같습니다.
이번 포스팅은 MSSQL CPU사용 많은 쿼리 확인이였습니다. 궁금하신 내용이나 잘못된 내용은 댓글이나 메일로 부탁드리겠습니다. 감사합니다.
728x90
반응형
'SQL > MS-SQL' 카테고리의 다른 글
[MS-SQL] 테이블 파티션 인덱스 설정 (0) | 2023.05.10 |
---|---|
[MS-SQL] 인덱스 리빌드(Rebuild), 리오그나이즈(Reorganize) 스케쥴러 (0) | 2023.04.18 |
[MS-SQL] 데이터 암호화 (0) | 2023.03.03 |
[MS-SQL]날짜 형식 포맷(CONVERT) (0) | 2023.02.24 |
[MS-SQL] MSSQL 설치 - Windows (0) | 2023.02.23 |