반응형
안녕하세요. 투자하는 개발자 투개자입니다!
오늘은 쿼리 수행 시 해당 쿼리의 CPU사용량을 알아내는 쿼리를 배워보겠습니다.
옵티마이져의 실행계획이 너무 비싸거나, 작성한 쿼리가 너무 오래돈다싶은 경험이 다들 한번쯤 있으실것 같습니다.
DB공부와 쿼리튜닝을 잘하시는 분들이라면 내부적인 논리연산을 정확히 알고 계셔서 어디가 문제이고,
어느부분을 고쳐야할지 알 수 있으시겠지만, 초보자 혹은 중급자 분들도 어렵게 생각하는 부분이 쿼리튜닝이라고 생각합니다.
그래서 오늘 알려드릴 쿼리는 작성한 쿼리의 CPU사용량이 얼마인지 알아내는 쿼리입니다.
다들 아시겠지만, 회사를 다니다보면 어떤 업무를 수행할 때 왜 해야하는지에 대한 근거가 있어야합니다.
그래서 이번 쿼리를 통해 쿼리들의 CPU를 확인하고 바꿔야겠다는 경각심을 들게 해주는 쿼리를 알려드리겠습니다.
SELECT TOP [NUMBER] [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; | cs |
위의 쿼리를 실행시키면 현재까지 작성된 쿼리들의 CPU사용량을 평균, TOTAL, MAX로 알려주어
어떤 쿼리가 CPU를 많이 사용하고 있는지 알 수 있습니다.
반응형
'DB > MSSQL (SQLSERVER)' 카테고리의 다른 글
[MSSQL] SQL 쿼리 튜닝 -> 조인(JOIN)로 답을 찾자!(NESTED LOOP JOIN (중첩반복),SORT MERGE JOIN (정렬병합),HASH JOIN (해시매치)) (0) | 2020.07.15 |
---|---|
[MSSQL] SQL 쿼리 튜닝 -> 인덱스(index)로 답을 찾자! (0) | 2020.07.14 |
[MSSQL] WITH 사용해서 연속숫자 조회/뽑기 (0) | 2020.07.13 |
[MSSQL] 스키마 별 전체 행수(ROW)수 구하기 - COUNT (0) | 2020.07.13 |
[MSSQL] DELETE문 TRUNCATE문 DROP문 비교 및 사용법 (0) | 2020.07.13 |