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

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'

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%'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.