O que significa uma "taxa de acertos do cache de buffer" de 9990?


12

Eu recebi essa consulta em uma postagem no blog :

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'

O post dizia que me daria uma porcentagem de acessos ao cache. Pareceu indicar que seria um valor de 0 a 100 (mostrou um resultado de 87).

Mas quando eu corro, estou recebendo números muito altos. Aqui está um exemplo:

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

Isso significa 99,90%?

Se não, o que isso significa? E como posso obter o valor real?

NOTA: Obtive valores tão baixos quanto 257 e tão altos quanto 352363

Caso seja relevante, aqui estão algumas outras estatísticas do servidor:

  • Esperança de vida da página: 145
  • Leituras da página / s: 1.380.009.009

1
Desculpe, mas a postagem do blog está errada. :-( Denis Gobo acerta ...
Aaron Bertrand

Respostas:


18

Confuso, certo?

Bem, para realmente obter a relação, você precisa fazê-lo sozinho usando o Buffer cache hit ratio basealém do Buffer cache hit ratiotomando o resultado Buffer cache hit ratio / Buffer cache hit ratio base.

Experimente a consulta abaixo (de Menos de ponto ), que deve fornecer a% que você está procurando:

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'

5
Você deve dar crédito a Denis Gobo ...
Aaron Bertrand

@Aaron Um daqueles dias - atribuição adicionada
LowlyDBA


0

Se você não possui uma instância padrão do SQL server, mas nomeada instância, é necessário modificar a consulta como esta:

  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%'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.