2010-01-20 75 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并查看相应的性能计数器。