Что означает «коэффициент попадания в буферный кэш» в 9990?


12

Я получил этот запрос из поста в блоге :

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

1
Извините, но сообщение в блоге неверно. :-( Денис Гобо понимает это правильно ...
Аарон Бертран

Ответы:


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'


@Aaron Один из тех дней - добавлена ​​атрибуция
LowlyDBA

Меня смущают результаты, которые я получаю, см. Связанные Как можно получить коэффициент попадания в буферный кэш 100% при PLE 103?
Джеймс Дженкинс

0

Если у вас нет экземпляра 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%'
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.