2010-01-20 7 views
3

Kim Tripp의 기사 인 transaction log throughput을 읽고 VLF의 gazillions를 발견 한 후 윤곽을 그리면서 로그를 재구성 할 계획입니다. 결과를 로그 처리량으로 측정하여 조각화가 서버에 차이가 있는지 확인하고 싶지만 그렇게하는 방법은별로 없습니다. 로그 처리량을 측정 할 때 BOL이나 Google에서 아무 것도 찾을 수 없었습니다. 내가 함께 자갈을 만들 수 있었던 가장 좋은 전략은 LOGBUFFER 및 WRITELOG 대기에 대한 작업 당 평균 대기 시간이 감소하는지 확인하는 것입니다. 트랜잭션 로그 처리량을 측정 하시겠습니까?

SELECT wait_type, (wait_time_ms - signal_wait_time_ms) * 1./
     waiting_tasks_count AS [Wait (ms) per Task] 
FROM sys.dm_os_wait_stats 
WHERE wait_type IN ('LOGBUFFER', 'WRITELOG') 

은 성능 모니터 데이터베이스 처리량 카운터 ( http://technet.microsoft.com/en-us/library/ms189883.aspx),보다 확실한 아마도 유사 뭔가가 있나요?

답변

2
select * from sys.dm_os_performance_counters 
where counter_name in ('Log Flushes/sec' 
    ,'Log Bytes Flushed/sec' 
    ,'Log Flush Waits/sec' 
    ,'Log Flush Wait Time') 
and instance_name = '<dbname>'; 

이것은 성능 카운터이므로 실제 값에서 실제 값을 계산해야합니다. '로그 플러시 대기 시간'카운터의 경우 65792 유형 (즉, NumberOfItems64)은 쉽습니다. 원시 값은 값입니다. 그러나 나머지는 272096576 (즉, RateOfCountsPerSecond64)입니다.이 값은 델타 또는 두 개의 연속적인 원시 값을 샘플 고정 시까 지 초로 나누어 계산합니다.

Perfmon.exec를 실행하고 해당 성능 카운터를 확인하는 대신 easieer 대안.

관련 문제