[Data Dictionary Cache(데이터 딕셔너리 캐시)]
※ instance 재기동시 Cache 영역은 재생성됨
shared_pool_size에 존재하며, dictionary cache 및 library cache 영역으로 나뉨
1) Data Dictionary Cache 정의
: Data Dictionary Object 정보를 저장하는 곳.
hard parsing 수행시 테이블/컬럼/사용자의 권한을 확인하는 작업을 진행 필요하며,
이때 Data Dictionary의 Object가 Data Dictionary Cache로 로딩됨.
2) Data Dictionary Cache 성능
: 데이터 처리 속도 향상
디스크에 저장된 Data Dictionary의 정보에 대한 I/O가 발생하지 않고 바로 메모리 영역에서 읽어 사용할 수 있음.
3) Data Dictionary Hit Ratio 정의
: Data Dictionary Cache에서 데이터를 읽어들인 비율을 Hit Ratio로 표현함.
Data Dictionary Cache에서 읽은 횟수(GETS)와 Cache에 없어 I/O를 진행했을 때(GETMISSES)의 값을 비율을
V$ROWCACHE View를 통해 산출하여 확인할 수 있음.
4) Data Dictionary Hit Ratio 저하 원인 * Tibero 기준 분석시 APM/TPR 있어야함.
(1) Dictionary Cache가 작아서 필요한 Dictionary Object 가 Dictionary Cache에 계속 존재하지 않았을 경우
(2) DDL이 대량으로 수행되어 Dictionary Object가 대량으로 invalidation 이 일어났을 가능성 존재 (3) 분석업무 등 OLAP (데이터 일회성으로 접근)
(4) table full scan 많이 사용하는 경우 재사용될 가능성이 높은 블록까지 cache out 되버려 디스크I/O 발생 확률 증가
5) Data Dictionary Hit Ratio 조회
--Oracle 기준
select (1-(sum(getmisses)/sum(gets))) * 100 “Hit Ratio” from v$rowcache;
--Tibero 기준
(1)SELECT to_char(ROUND( ( sum(hit_cnt) - sum(miss_cnt) ) / sum(hit_cnt) * 100, 1)) "Dictionary Cache Hit Ratio(%)"
FROM v$rowcache;
Dictionary Cache Hit Ratio(%)
--------------------------------------
97.8
(2) SELECT TRUNC(SUM(miss_cnt)/SUM(hit_cnt)*100, 5), SUM(miss_cnt), SUM(hit_cnt) FROM v$rowcache
(3)SELECT TO_CHAR(sysdate,'yyyy/mm/dd hh24:mi:ss') AS "Time"
, 'Dictionary Cache' AS "Name"
, hit AS "Hit(%)"
, CASE WHEN hit > 90 then 'Good'
WHEN hit between 70 and 90 then 'Average'
ELSE 'Not Good'
END AS "Status"
FROM ( SELECT ROUND((1- sum(miss_cnt)/(sum(hit_cnt+miss_cnt)))*100, 2) AS hit
FROM v$rowcache )
/
Time Name Hit(%) Status
------------------- ---------------- ---------- --------
2022/05/18 16:57:38 Dictionary Cache 97.84 Good
'공부 > DBMS' 카테고리의 다른 글
tibero resetlogs open (0) | 2020.10.03 |
---|---|
데이터베이스(Database, DB) 개념 (0) | 2018.11.20 |