web-dev-qa-db-ja.com

「バッファキャッシュヒット率」9999はどういう意味ですか?

私はこのクエリを ブログ投稿 から取得しました:

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'

投稿はそれが私にキャッシュへのヒットのパーセンテージを与えると言った。値が0〜100であることを示しているようです(結果は87でした)。

しかし、実行すると、非常に多くの数が得られます。次に例を示します。

object_name               counter_name             cntr_value  
SQLServer:Buffer Manager  Buffer cache hit ratio   9990

これは99.90%を意味しますか?

そうでない場合、それはどういう意味ですか?そして、どうすれば真の価値を得ることができますか?

注:257のように低い値と352363のように高い値を取得しています

該当する場合は、他のいくつかのサーバー統計を以下に示します。

  • ページの平均余命:145
  • ページ読み取り/秒:1,380,009,009
12
Vaccano

紛らわしいですよね?

まあ、実際に比率を取得するには、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'
18
LowlyDBA

SQLサーバーの既定のインスタンスがなく、名前付きインスタンスがある場合は、次のようにクエリを変更する必要があります。

  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 LIKE '%:Buffer Manager%') b ON  a.OBJECT_NAME = b.OBJECT_NAME
WHERE a.counter_name = 'Buffer cache hit ratio'
AND a.OBJECT_NAME LIKE '%:Buffer Manager%'
0
JKO ASOL