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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
66 | Front Page | 운영자 | 2012.02.21 | 131203 |
65 | 6._문장수준_읽기_일관성 | 정찬호 | 2012.03.12 | 57274 |
64 | 3._SQL트레이스 | sapius | 2012.04.04 | 26853 |
63 | 5._Undo | dasini | 2012.03.11 | 25074 |
62 | 2._SQL_처리과정 | dasini | 2012.04.06 | 21688 |
61 | 6._RAC_캐시_퓨전 | 남송휘 | 2012.05.21 | 17532 |
60 | 4._커서_공유 | 남송휘 | 2012.04.27 | 16112 |
59 | 5._오라클_Lock | 시와처 | 2012.03.26 | 12579 |
58 | 8._블록_클린아웃 | 시와처 | 2012.03.19 | 12015 |
57 | 4._동시성_구현_사례 [1] | dasini | 2012.03.27 | 11698 |
56 | 8._Statspack_AWR | 시와처 | 2012.04.01 | 11489 |
55 | 2._DB_버퍼_캐시 | 시와처 | 2012.03.04 | 10432 |
54 | 10._대기_이벤트 | 박영창 | 2012.03.19 | 10373 |
53 | 9._Snapshot_too_old | 박영창 | 2012.03.19 | 9734 |
52 | 1._기본_아키텍처 | AskZZang | 2012.03.02 | 8350 |
51 | 7._세션_커서_캐싱 | 박영창 | 2012.04.22 | 7793 |
50 | 5._Direct_Path_IO | 남송휘 | 2012.05.21 | 7559 |
49 | 3._버퍼_Lock | 박영창 | 2012.02.24 | 7261 |
48 | 7._PLSQL_함수의_특징과_성능_부하 | 남송휘 | 2012.05.15 | 6642 |
47 | 10._V$SQL | 정찬호 | 2012.04.09 | 6544 |