오라클 DB의 buffer cache hit ration 관련해서 질문 드립니다.
dba_hist_sysmetric_summary 테이블에서
metric_name = 'Buffer Cache Hit Ratio' 일때 AVG(average) 값과
v$sysstat 뷰에서
( 1 - (물리적 블록읽기) / (논리적 블록읽기) ) * 100 을 계산해서 나오는 값을 (사용쿼리 아래 참조)
SELECT ROUND((1
- ((SUM(DECODE(NAME, 'physical reads', VALUE,0)))
- SUM(DECODE(NAME, 'physical reads direct', VALUE,0))
- SUM(DECODE(NAME, 'physical reads direct (lob)', VALUE,0)))
/ (SUM(DECODE(NAME, 'consistent gets', VALUE,0))
+ SUM(DECODE(NAME, 'db block gets', VALUE,0)))))*100,2) "Buffer Cache Hit Ratio(%)"
FROM V$SYSSTAT
WHERE NAME IN ('physical reads', 'physical reads direct', 'physical reads direct (lob)', 'consistent gets', 'db block gets');
나오는 값을 매시간 동일 시점에 crontab으로 걸어서 나오는 결과값들을 비교해보면 적잖게 차이가 발생합고 있습니다.
두 가지 방식으로 인한 값의 차이가 발생하는 이유에 대해서 가이드를 얻고자 여기 게시판에 글을 남깁니다.