Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  SQL Server 성능 검증 
작성일시 : 2008. 10. 8. 09:18 | 분류 : SQL Server/Administration

쿼리 필요하신 분은 justlock@gmail.com 으로 MSN 쪽지 보내주시면 첨부 파일 발송해드립니다.
이거... Copy가 않되게 되어 있어 불편하군요...;;

SQL Server 2005 부터는 굳이 프로파일러가 없어도 Plan Cache 등의 쿼리 성능 데이터를 확인 할 수 있습니다.
보통 dmv 라고 불리우는 view 들입니다.

저도 어쩌다가 알게 됐는데 정말 사용해 보니 좋더군요. 프로파일러 처럼 리소스를 많이 먹는 것도 아니고...
물론 성능 문제에 대한 원인 규명은 힘들겠지만 근거 데이터로는 손색이 없어 보입니다.

DMV 를 이용하여 SP 및 쿼리의 성능을 확인 하기 위한 간단한 SELECT를 공개 합니다.
개인적인 용도로 사용하시는 것은 문제가 없으나 기타 다른 용도로 사용할 때는 꼭 출처를 밝혀 주시기 바랍니다.

[Out Put]

[쿼리]
본 쿼리는 SQL Server 의 옵티마이져의 성능 통계를 바탕으로 합니다.
Where 절의 Date 값을 조정하여 원하는 시점의 성능 데이터를 확인 할 수 있습니다.

  1. 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 최종실행시간    
  •  --,qs.total_elapsed_time - qs.total_worker_time as total_wait_time   
  •  --,qs.total_worker_time as cpu_time   
  •  --,qs.total_logical_reads as reads   
  •  --,qs.total_logical_writes as writes   
  • 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  
  • |