SQL Server 가 설치된 서버의 CPU 사용율이 급등하고 있다면..

대부분의 경우에는 디스크 IO를 많이 유발시키거나 아니면 인덱스를 잘 못 타고 있어서 발생하고 있는 경우가 대 부분입니다.

그런데 이러한 경우 프로필러로 보면 어떤 쿼리에서 문제가 되는지 일부는 쉽게 확인 할 수 있지만..

CPU의 과도한 사용 때문에 응답이 늦는 경우에는 발견하기 어려운 경우도 종종 발생합니다.

 

이럴 때 확인 할 수 있는 쿼리는 아래 와 같습니다.

 

1. 실행 가능 작업의 값 확인 하기


SELECT
Scheduler_ID,
Current_Tasks_Count,
Runnable_Tasks_Count
FROM
SYS.DM_OS_SCHEDULERS
WHERE
Scheduler_ID < 255

 

2. CPU를 많이 사용하는 상위 50개의 SQL 문 확인하기

 

SELECT TOP 50 (a.total_worker_time/a.execution_count) AS [Avg_CPU_Time],
Convert(Varchar,Last_Execution_Time) AS 'Last_execution_Time',
Total_Physical_Reads,
SUBSTRING(b.text,a.statement_start_offset/2,
(case when a.statement_end_offset = -1 then len(convert(nvarchar(max), b.text)) * 2
else
a.statement_end_offset end - a.statement_start_offset)/2) AS Query_Text,
dbname=Upper(db_name(b.dbid)),
b.objectid AS 'Object_ID'
FROM sys.dm_exec_query_stats a
CROSS APPLY
sys.dm_exec_sql_text(a.sql_handle) AS b
ORDER BY
[Avg_CPU_Time] DESC

 

요즘 DB 에 대해 조금 깊이 있게 공부를 하고 있는데..

알면 알 수록 재미 있는 부분들이 많이 있네요. ^^

'IT 이야기 > DataBase' 카테고리의 다른 글

MSSQL for Linux  (0) 2016.11.18
Redis Architecture (번역문)  (0) 2016.06.27
SQL Server Performance Monitor Counter Part 1  (0) 2015.05.27
MS-SQL 성능 개선 - Index rebuild  (0) 2015.05.27
MSSQL File Size 구성  (0) 2015.05.27

+ Recent posts