운영환경에서 데이터가 증가하면서 혹은 통계업데이트에 의해 실행계획이 변경되어 쿼리가 갑자기 이전보다 확 느려질 수 있다.
아래와 같은 방법으로 실행계획을 확인할 수 있다.
1) 문제의 쿼리 찾기
--spid 찾기
select hostname, hostprocess, spid
from master..sysprocesses
where hostname = '호스트네임'
SELECT client_net_address, session_id
FROM sys.dm_exec_connections
WHERE client_net_address = 'IP'
--실행중인 쿼리 확인
SELECT
sqltext.TEXT,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time,
req.blocking_session_id,
req.percent_complete,
req.plan_handle -- 실행계획 확인할 때 사용
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
where req.session_id = SPID
2) 실행계획 확인하기
SELECT * FROM sys.dm_exec_query_plan (req.plan_handle);
3) 예상 실행계획 삭제
DBCC FREEPROCCACHE (0x06000700A9F6B63640212E7B280000000000000000000000)
4) 캐시에 실행계획이 삭제되었는지 확인
SELECT TOP 10 UseCounts, Cacheobjtype, Objtype, TEXT, query_plan
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
CROSS APPLY sys.dm_exec_query_plan(plan_handle)
5) 문제의 쿼리 재수행
위 방법으로도 해결이 되지 않는다면 실행계획을 분석하여 쿼리 실행에 부하요소를 주는 근본적인 원인을 찾아야 한다.
'Database > SQL Server' 카테고리의 다른 글
SQL Server 버퍼 캐시에 대한 통찰력 (0) | 2021.01.27 |
---|---|
SQL 에이전트 작업 삭제 오류 ( 유지관리계획 삭제 오류 ) DELETE 문이 REFERENCE 제약 조건 “FK_subplan_job_id”과(와) 충돌했습니다. Microsoft SQL Server, 오류: 547 (0) | 2021.01.27 |
SQL Server 백업/복원 예상 완료시간 확인하기 (0) | 2021.01.20 |
DB Backup Script (0) | 2021.01.20 |
free SSMS add-in for effective database performance tracing (0) | 2021.01.20 |