7._Result_캐시
2012.05.27 20:14
- Result 캐시는 Shared Pool 에 위치
- 시스템 I/O 발생량을 최소화
- 한번 수행한 Query 또는 PL/SQL 함수의 결과 값을 저장 (11g 이상)
- Result 캐쉬 영역
- SQL Query Result 캐시
- PL/SQL 함수 Result 캐시
- 관련 Parameter
구분 | 기본값 | 설명 |
Result_cache_mode | manual | Result Cache 등록방식을 결정
|
result_cache_max_size | N/A | SGA 내 Result_cache가 사용할 총 량(Bytes)
|
result_cache_max_result | 5 | 하나의 SQL결과 집합이 전체캐시 영역에 차지할수 있는 최대 크기 비율 |
result_cache_remote_expiration | 0 | remote 객체의 결과를 얼마 동안 보관할지 (분) 0 => remote 개체 저장하지 않음 |
- 관련 Latch
- Result Cache: Latch
- Result Cache:SO Latch
- 사용방법
- Query 캐싱
select /*+ RESULT_CACHE */ COL,COUNT(*)
from R_CACHE_TEST
where GUBUN=7
group by COL;
- PL/SQL 함수 캐싱
create or replace function get_team_name (p_team_cd number)
return varchar2
RESULT_CACHE RELIES_ON (r_cache_function)
is
l_team_name r_cache_function.team_name%type;
begin
select team_name into l_team_name
from r_cache_function
where team_cd=p_team_cd;
return l_team_name;
end;/
- v$result_cache_objects 에서 캐싱된 자료를 확인가능
- bind 변수 사용시에는 bind 변수의 값의 종류 별로 캐싱됨
- LRU 알고리즘에 의해 관리됨
- 캐싱된 쿼리가 참조하는 TABLE 에 변경 발생시 해당 캐시 엔트리는 무효화 됨
- 파티션 테이블에 DML이 발생해도 무관한 파티션 까지 무효화됨
- PL/SQL 함수 캐싱시에는 relies_on 에 명시된 테이블이 변경되면 무효화됨
- 쿼리 결과 집합을 캐싱하지 못하는 경우
- Dictionary Object 참조
- Temporary 테이블 참조
- Sequence 사용 (Currval, nextval pseudo 컬럼 호출)
- 다음 함수 사용시
- CURRENT_DATE
- CURRENT_TIMESTAMP
- LOCAL_TIMESTAMP
- SYS_CONTEXT(with non-constant vriables)
- SYS_GUID
- SYSDATE
- SYSTIMESTAMP
- USERENV(with non-constant variables)
- Result 캐시의 극대화
- 작은 결과 집합을 얻으려고 대용량 데이터를 읽어야 할때
- 읽기 전용의 작은 테이블을 반복적으로 읽어야 할 때
- 읽기 전용 코드 테이블을 읽어 코드 명칭을 반환하는 함수
- Result 캐시 사용의 자제
- DML 이 많이 발생하는 TABLE
- 함수 또는 바인드 변수를 가진 쿼리에서 입력되는 값의 종류가 많고 그 값들이 골고루 입력 될때
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
26 | 5장._데이터베이스_Call_최소화_원리 | 운영자 | 2012.05.07 | 4321 |
25 | 1._Call_통계 | 정찬호 | 2012.05.07 | 4310 |
24 | 5._바인드_변수의_중요성 | 시와처 | 2012.04.23 | 4299 |
23 | 10._Dynamic_SQL_사용_기준 | 남송휘 | 2012.05.07 | 4276 |
22 | 2._Memory_vs._Disk_IO | 정찬호 | 2012.05.23 | 4167 |
» | 7._Result_캐시 | 운영자 | 2012.05.27 | 4157 |
20 | 8._IO_효율화_원리 | 운영자 | 2012.06.06 | 4121 |
19 | 3._Deterministic_함수_사용_시_주의사항 | 정찬호 | 2012.05.29 | 4091 |
18 | 1._Library_Cache_Lock_Pin | 남송휘 | 2012.05.21 | 3964 |
17 | 3._Single_Block_vs._Multiblock_IO | 정찬호 | 2012.05.23 | 3960 |
16 | 1._블록_단위_IO | 정찬호 | 2012.05.22 | 3925 |
15 | 6장._IO_효율화_원리 | 정찬호 | 2012.05.22 | 3808 |
14 | 4._Array_Processing_활용 | 시와처 | 2012.05.14 | 3770 |
13 | 11._Static_SQL_구현을_위한_기법들 | dasini | 2012.05.07 | 3736 |
12 | 1._SQL과_옵티마이저 | dasini | 2012.04.06 | 3612 |
11 | 4._Prefetch | 남송휘 | 2012.05.21 | 3596 |
10 | 8._PLSQL_함수_호출_부하_해소_방안 | 남송휘 | 2012.05.21 | 3457 |
9 | 3._데이터베이스_Call이_성능에_미치는_영향 | 시와처 | 2012.05.13 | 3382 |
8 | 6._V$SYSTEM_EVENT | 시와처 | 2012.04.01 | 3311 |
7 | 11._Shared_Pool | 박영창 | 2012.03.19 | 3163 |