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
Vaccano
fonte
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'
LowlyDBA
fonte
5
Você deve dar crédito a Denis Gobo ...
Aaron Bertrand
@Aaron Um daqueles dias - atribuição adicionada
LowlyDBA
Estou confuso com os resultados que recebo, veja relacionados Como você pode ter uma taxa de acertos do cache de buffer de 100% com PLE de 103?
21819 James Jenkins
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%'
JKO ASOL
fonte