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 |