2010-01-20 70 views
3

在閱讀Kim Tripp關於transaction log throughput的文章後,發現我有VLFs的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)的「登錄沖洗等待時間」計數器很容易:原始值是該值。但是其他類型是272696576型(即RateOfCountsPerSecond64),其值是通過將增量或兩個連續的原始值除以樣品粘合之間所經過的秒數計算出來的。

easieer的替代方法是啓動Perfmon.exec並查看相應的性能計數器。