在阅读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)?
答案 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并查看相应的性能计数器,则更容易。