Vac*_*ano 12 performance sql-server sql-server-2012
我从一篇博客文章中得到了这个查询:
SELECT object_name, counter_name, cntr_value
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Buffer Manager%'
AND [counter_name] = 'Buffer cache hit ratio'
Run Code Online (Sandbox Code Playgroud)
帖子说它会给我一定比例的缓存命中率。它似乎表明它将是一个 0-100 的值(它显示的结果为 87)。
但是当我运行它时,我得到了非常高的数字。下面是一个例子:
object_name counter_name cntr_value
SQLServer:Buffer Manager Buffer cache hit ratio 9990
Run Code Online (Sandbox Code Playgroud)
这是否意味着 99.90%?
如果不是,那是什么意思?我怎样才能得到真正的价值?
注意:我得到的值低至257,高至352363
如果它是相关的,这里有一些其他服务器统计信息:
Low*_*n M 18
令人困惑,对吧?
好吧,要实际获得比率,您需要自己使用Buffer cache hit ratio base
除了Buffer cache hit ratio
从Buffer cache hit ratio / Buffer cache hit ratio base
.
试试下面的查询(来自Less Than Dot),它应该给你你正在寻找的 %:
SELECT (a.cntr_value * 1.0 / b.cntr_value) * 100.0 as BufferCacheHitRatio
FROM sys.dm_os_performance_counters a
JOIN (SELECT cntr_value, OBJECT_NAME
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Buffer cache hit ratio base'
AND OBJECT_NAME = 'SQLServer:Buffer Manager') b ON a.OBJECT_NAME = b.OBJECT_NAME
WHERE a.counter_name = 'Buffer cache hit ratio'
AND a.OBJECT_NAME = 'SQLServer:Buffer Manager'
Run Code Online (Sandbox Code Playgroud)