¿Qué significa una "proporción de aciertos de caché de búfer" de 9990?

12

Recibí esta consulta de una publicación de 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'

La publicación decía que me daría un porcentaje de visitas al caché. Parecía indicar que sería un valor de 0-100 (mostró un resultado de 87).

Pero cuando lo ejecuto obtengo números muy altos. Aquí hay un ejemplo:

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

¿Esto significa 99.90%?

Si no, ¿qué significa? ¿Y cómo puedo obtener el valor real?

NOTA: He obtenido valores tan bajos como 257 y tan altos como 352363

En caso de que sea relevante, aquí hay algunas otras estadísticas del servidor:

  • Esperanza de vida de la página: 145
  • Lecturas de página / seg .: 1.380.009.009
Vaccano
fuente
1
Lo sentimos, pero la publicación del blog está equivocada. :-( Denis Gobo lo hace bien ...
Aaron Bertrand

Respuestas:

18

Confuso, ¿verdad?

Bueno, para obtener realmente la proporción, deberá hacerlo usted mismo usando Buffer cache hit ratio baseademás Buffer cache hit ratiode tomar el resultado de Buffer cache hit ratio / Buffer cache hit ratio base.

Pruebe la consulta a continuación (de Less Than Dot ), que debería darle el% que está buscando:

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
fuente
55
Deberías darle crédito a Denis Gobo ...
Aaron Bertrand
@Aaron Uno de esos días - atribución agregada
LowlyDBA
Estoy confundido por los resultados que obtengo, ver relacionados ¿Cómo puede tener una proporción de aciertos de caché de búfer de 100% con PLE de 103?
James Jenkins el
0

Si no tiene una instancia predeterminada del servidor SQL, sino una instancia con nombre, debe modificar la consulta de esta manera:

  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
fuente