Was bedeutet eine "Buffer Cache Hit Ratio" von 9990?


12

Ich habe diese Frage von einem Blog-Post bekommen :

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'

Der Beitrag sagte, dass es mir einen Prozentsatz der Treffer im Cache geben würde. Es schien anzuzeigen, dass es ein Wert von 0-100 sein würde (es zeigte ein Ergebnis von 87).

Aber wenn ich es laufen lasse, bekomme ich sehr hohe Zahlen. Hier ist ein Beispiel:

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

Bedeutet das 99,90%?

Wenn nicht, was bedeutet das? Und wie kann ich den wahren Wert bekommen?

HINWEIS: Ich habe Werte von 257 bis 352363 erhalten

Für den Fall, dass es relevant ist, sind hier ein paar andere Serverstatistiken:

  • Lebenserwartung der Seite: 145
  • Seite liest / sec: 1,380,009,009

1
Sorry, aber der Blogpost ist falsch. :-( Denis Gobo macht es richtig ...
Aaron Bertrand

Antworten:


17

Verwirrend, richtig?

Nun, um das Verhältnis tatsächlich zu erhalten, müssen Sie es selbst tun, indem Sie das Ergebnis Buffer cache hit ratio basezusätzlich zu dem Buffer cache hit ratiovon verwenden Buffer cache hit ratio / Buffer cache hit ratio base.

Versuchen Sie die folgende Abfrage (von Less Than Dot ), die Ihnen den gewünschten Prozentsatz geben sollte:

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 Einer dieser Tage - Zuschreibung hinzugefügt
LowlyDBA

Ich bin durch die Ergebnisse, die ich erhalte, verwirrt, siehe verwandte Wie können Sie eine Puffer-Cache-Trefferquote von 100% mit PLE von 103 haben?
James Jenkins

0

Wenn Sie keine Standardinstanz von SQL Server, sondern eine benannte Instanz haben, müssen Sie die Abfrage folgendermaßen ändern:

  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%'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.