쿼리 필요하신 분은 justlock@gmail.com 으로 MSN 쪽지 보내주시면 첨부 파일 발송해드립니다.
이거... Copy가 않되게 되어 있어 불편하군요...;;
SQL Server 2005 부터는 굳이 프로파일러가 없어도 Plan Cache 등의 쿼리 성능 데이터를 확인 할 수 있습니다.
보통 dmv 라고 불리우는 view 들입니다.
저도 어쩌다가 알게 됐는데 정말 사용해 보니 좋더군요. 프로파일러 처럼 리소스를 많이 먹는 것도 아니고...
물론 성능 문제에 대한 원인 규명은 힘들겠지만 근거 데이터로는 손색이 없어 보입니다.
DMV 를 이용하여 SP 및 쿼리의 성능을 확인 하기 위한 간단한 SELECT를 공개 합니다.
개인적인 용도로 사용하시는 것은 문제가 없으나 기타 다른 용도로 사용할 때는 꼭 출처를 밝혀 주시기 바랍니다.
[Out Put]
[쿼리]
본 쿼리는 SQL Server 의 옵티마이져의 성능 통계를 바탕으로 합니다.
Where 절의 Date 값을 조정하여 원하는 시점의 성능 데이터를 확인 할 수 있습니다.
-
- SELECT
- TOP 10
- DB_NAME(st.dbid) DB명
- ,OBJECT_SCHEMA_NAME(objectid, st.dbid) 스키마명
- ,OBJECT_NAME(objectid, st.dbid) SP명
-
- ,SUBSTRING(text, qs.statement_start_offset/2
- ,(CASE
- WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max),text))*2
- ELSE qs.statement_end_offset
- END - qs.statement_start_offset)/2) AS 쿼리구문
-
- ,qs.plan_generation_num AS 컴파일횟수
-
- ,qs.execution_count AS 실행횟수
-
- ,qs.total_elapsed_time AS 총경과시간
- ,qs.total_elapsed_time / qs.execution_count AS 평균경과시간
-
- ,qs.last_elapsed_time AS 최근경과시간
-
- ,qs.min_elapsed_time AS 가장빠른경과시간
-
- ,qs.max_elapsed_time AS 가장느린경과시간
-
- ,qs.last_execution_time AS 최종실행시간
-
-
-
-
- FROM sys.dm_exec_query_stats qs
- CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
- LEFT JOIN sys.dm_exec_requests r ON qs.sql_handle = r.sql_handle
- JOIN sys.dm_exec_cached_plans cp ON qs.plan_handle = cp.plan_handle
- WHERE qs.last_execution_time > '2008-10-07 08:30:00.000'
- AND qs.last_execution_time < '2008-10-09 18:00:00.000'
- ORDER BY 4 DESC