Apa yang dimaksud dengan "rasio hit cache Buffer" dari 9990?

12

Saya mendapat pertanyaan ini dari posting 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'

Posting mengatakan bahwa itu akan memberi saya persentase hit ke cache. Tampaknya menunjukkan bahwa itu akan menjadi nilai 0-100 (itu menunjukkan hasil 87).

Tetapi ketika saya menjalankannya saya mendapatkan angka yang sangat tinggi. Berikut ini sebuah contoh:

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

Apakah ini berarti 99,90%?

Jika tidak, apa artinya? Dan bagaimana saya bisa mendapatkan nilai sebenarnya?

CATATAN: Saya mendapatkan nilai serendah 257 dan setinggi 352363

Jika relevan, berikut adalah beberapa statistik server lainnya:

  • Harapan hidup halaman: 145
  • Halaman terbaca / detik: 1,380,009,009
Gunung berapi
sumber
1
Maaf, tetapi posting blog salah. :-( Denis Gobo melakukannya dengan benar ...
Aaron Bertrand

Jawaban:

18

Membingung kan?

Nah, untuk benar - benar mendapatkan rasio, Anda harus melakukannya sendiri menggunakan Buffer cache hit ratio baseselain Buffer cache hit ratiodengan mengambil hasil dari Buffer cache hit ratio / Buffer cache hit ratio base.

Coba kueri di bawah ini (dari Kurang Dari Dot ), yang akan memberi Anda% yang Anda cari:

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
sumber
5
Anda harus menghargai Denis Gobo ...
Aaron Bertrand
@ Harun Suatu hari - atribusi ditambahkan
LowlyDBA
Saya bingung dengan hasil yang saya dapatkan, lihat terkait. Bagaimana Anda bisa memiliki rasio hit cache Buffer 100% dengan PLE 103?
James Jenkins
0

Jika Anda tidak memiliki turunan standar dari SQL server, tetapi bernama turunan, Anda harus mengubah kueri seperti ini:

  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
sumber