시간 간격 당 저장 프로시 저당 호출 수를 어떻게 모니터링 할 수 있습니까?


10

일부 성능 문제를 진단하기 위해 시스템 성능과 비교하여 특정 절차가 호출되는 횟수를 더 잘 이해하고 싶습니다. 특정 기간 동안 각 프로 시저가 호출 된 횟수를 얻는 방법이 있습니까?

답변:


17

DMV ( Dynamic Management Views )에서이를 얻을 수 있습니다 . 특정 저장 프로 시저에 대한 통계를 얻으려면 다음 쿼리를 시도하십시오.

SELECT
    OBJECT_NAME(qt.objectid)
  , qs.execution_count AS [Execution Count]
  , qs.execution_count / DATEDIFF(Second, qs.creation_time, GETDATE()) AS [Calls/Second]
  , qs.total_worker_time / qs.execution_count AS [AvgWorkerTime]
  , qs.total_worker_time AS [TotalWorkerTime]
  , qs.total_elapsed_time / qs.execution_count AS [AvgElapsedTime]
  , qs.max_logical_reads
  , qs.max_logical_writes
  , qs.total_physical_reads
  , DATEDIFF(Minute, qs.creation_time, GETDATE()) AS [Age in Cache]
FROM
    sys.dm_exec_query_stats AS qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
WHERE
    qt.[dbid] = DB_ID()
AND qt.objectid = OBJECT_ID('StoredProcedureName')
OPTION (RECOMPILE);

가장 자주 실행되는 절차를 보려면

SELECT
    OBJECT_NAME(qt.objectid)
  , qs.execution_count AS [Execution Count]
  , qs.execution_count / DATEDIFF(Second, qs.creation_time, GETDATE()) AS [Calls/Second]
  , qs.total_worker_time / qs.execution_count AS [AvgWorkerTime]
  , qs.total_worker_time AS [TotalWorkerTime]
  , qs.total_elapsed_time / qs.execution_count AS [AvgElapsedTime]
  , qs.max_logical_reads
  , qs.max_logical_writes
  , qs.total_physical_reads
  , DATEDIFF(Minute, qs.creation_time, GETDATE()) AS [Age in Cache]
FROM
    sys.dm_exec_query_stats AS qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
WHERE
    qt.[dbid] = DB_ID()
ORDER BY
    qs.execution_count DESC
OPTION (RECOMPILE);

보고 된 값은 마지막 재시작 이후 누적됩니다. 일정 기간 동안 측정하려면 아래 명령을 사용하여 대기 통계를 재설정하십시오.

DBCC SQLPERF("sys.dm_os_wait_stats",CLEAR);

하루 종일 고정 시간 간격을 측정하려는 경우 에이전트 작업을 통해 쿼리 출력을 테이블에 공급하고 a) 두 실행 사이의 값을 계산하거나 b) 에이전트 작업의 마지막 단계로 재설정 대기 통계를 발행 할 수 있습니다 .

또는 프로파일 러 추적을 캡처하고 Clear Trace를 통해 실행하십시오 .


많은 결과 세트를 얻었지만 정확하게는 아닙니다. 예를 들어, object_name 응답 열에 동일한 객체가 여러 개 있지만 대부분의 세부 사항은 몇 가지 예외가 있지만 동일합니다. 일치하는 열 세부 사항 : ExecutionCount, Call / Second, AgeInCache. 일치하지 않는 열 세부 사항 : AvgWorkerTime, TotalWorkerTime, AvgElapesedTime. 다 대다 결과의 원인은 무엇입니까?
kstubs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.