Otrzymałem to zapytanie z posta na blogu :
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'
W poście podano, że dałoby mi to procent trafień do pamięci podręcznej. Wydawało się, że wskazuje, że będzie to wartość 0-100 (pokazał wynik 87).
Ale kiedy go uruchamiam, otrzymuję bardzo wysokie liczby. Oto przykład:
object_name counter_name cntr_value
SQLServer:Buffer Manager Buffer cache hit ratio 9990
Czy to oznacza 99,90%?
Jeśli nie, co to znaczy? Jak mogę uzyskać prawdziwą wartość?
UWAGA: Mam wartości tak niskie jak 257 i tak wysokie jak 352363
Ponieważ jest to istotne, oto kilka innych statystyk serwera:
- Oczekiwana długość życia strony: 145
- Odczyty strony / s: 1 380,009,009
sql-server
performance
sql-server-2012
Vaccano
źródło
źródło
Odpowiedzi:
Mylące, prawda?
Cóż, aby faktycznie uzyskać współczynnik, musisz zrobić to sam, używając
Buffer cache hit ratio base
oprócz tegoBuffer cache hit ratio
, biorąc wynikBuffer cache hit ratio / Buffer cache hit ratio base
.Wypróbuj poniższe zapytanie (od mniej niż kropka ), które powinno dać ci%, którego szukasz:
źródło
Jeśli nie masz domyślnej instancji serwera SQL, ale nazwanej instancji, musisz zmodyfikować zapytanie w następujący sposób:
źródło