衡量事务日志吞吐量?

时间:2010-01-20 19:09:05

标签: sql-server

在阅读Kim Tripp关于transaction log throughput的文章并发现我有大量的VLF之后,我正计划按照她的概述对日志进行重组。我想衡量日志吞吐量的增加,看看碎片是否会对我的服务器产生影响,但我不知道如何做到这一点。我无法在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')

是否有更明确的内容,可能类似于perfmon数据库吞吐量计数器(http://technet.microsoft.com/en-us/library/ms189883.aspx)?

1 个答案:

答案 0 :(得分: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>';  

这是一个性能计数器,您需要从原始值计算实际值。对于“Log Flush Wait Time”计数器,类型为65792(即NumberOfItems64)很简单:原始值是值。但其他的是272696576型(即RateOfCountsPerSecond64),其值是通过将delta或两个连续原始值除以样本定位之间经过的秒数来计算的。

如果要启动Perfmon.exec并查看相应的性能计数器,则更容易。