2009-05-04 2 views
46

Sql Server 2005 Profiler를 사용하면 가장 느린 쿼리와 저장 프로 시저를 찾기 위해 어떤 이벤트, 열 및 필터를 추적합니까?가장 느린 쿼리를 찾는 방법

Slow = 인수를 위해 N 초보다 큰 10입니다.

+0

"느림"을 정의하십시오. 쿼리가 느려질 수 있지만 이것은 수행 된 호출 수와 그 호출이 중요한지 여부에만 관련됩니다. – Lucero

답변

77

SQL 2005에서는 관리보기를 사용하여 slow running queries을 찾을 수 있습니다. 얼마 전 나는 SQL server performance에 좋은 스크립트를 발견하게되었습니다. 가장 느린 성능의 데이터를 먼저 나열합니다.

SELECT creation_time 
     ,last_execution_time 
     ,total_physical_reads 
     ,total_logical_reads 
     ,total_logical_writes 
     , execution_count 
     , total_worker_time 
     , total_elapsed_time 
     , total_elapsed_time/execution_count avg_elapsed_time 
     ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1, 
     ((CASE statement_end_offset 
      WHEN -1 THEN DATALENGTH(st.text) 
      ELSE qs.statement_end_offset END 
      - qs.statement_start_offset)/2) + 1) AS statement_text 
FROM sys.dm_exec_query_stats AS qs 
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st 
ORDER BY total_elapsed_time/execution_count DESC; 
+1

시간의 측정 단위를 알고 계십니까? total_worker_time, total_elapsed_time 및 avg_elapsed_time? –

+4

시간은 마이크로 초입니다. MSDN에는 관리보기에 대한 세부 정보가 있습니다. http://msdn.microsoft.com/en-us/library/ms189741.aspx – u07ch

+1

예, DMV는 훌륭하지만 이름이 암시하는 것처럼 DMV도 동적입니다. 서버가 시작될 때마다 플러시됩니다. 서버가 매일 밤 재부팅되면 주어진 날짜에 매우 신뢰할 수있는 샘플이 아닐 수도 있습니다. 따라서 이러한 측정은주의해서 처리하십시오. 동적이며 매우 작은 샘플을 기반으로 할 수 있습니다 ... –

3

기간 열은 나를 위해 그것을하지만 때로는 읽기 및 쓰기 열을 볼 때도 있습니다.

원시 쿼리를 가져 오기 위해 TSQL : StmtCompleted 필터를 사용합니다. 스토어드 프로 시저 같은 것을 추가 할 수도 있지만, tsql은보아야 할 'base'입니다. MSDN article

을 말하듯이 "저장 프로 시저 의 실행은 SP에 의해 모니터링 할 수 있습니다 : 시작, SP를 : StmtStarting, SP : StmtCompleted 및 SP : 완료 이벤트 클래스 및 모든 TSQL 이벤트 클래스를 . "

10

프로파일 러를 사용하기 전에 기본 사용 보고서를 확인합니다. 데이터베이스, 보고서, 표준 보고서, 개체 실행 통계를 마우스 오른쪽 단추로 클릭하십시오.

현재 캐시 된 실행 계획과 리소스의 양 및 실행 횟수가 나열됩니다. 이것은 일반적으로 서버를 계속 사용 중인지에 대한 아주 좋은 아이디어를 제공합니다.

+1

@Andomar, 프로덕션 서버에서 해당 보고서를 실행해도 괜찮습니까? 내 프로덕션 서버 중 하나에서 해당 보고서를 실행하려고 시도했지만 1 분 후에도 "데이터 검색"이라고했습니다. 나는 그것이 안전하기를 멈췄다. –

+0

@Bill Paetzke : 보고서가 상당히 오래 실행 되더라도 보고서를 안전하게 보관해야합니다. 신뢰할 수 없다면 프로세스 목록에서 차단 문제를 확인할 수 있습니다! – Andomar

관련 문제