IT’s Ha

[MS-SQL] CPU 사용량 많은 쿼리 조회 본문

SQL/MS-SQL

[MS-SQL] CPU 사용량 많은 쿼리 조회

Deleloper Ha 2023. 3. 3. 12:56
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
반응형
Comments