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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
46 | 9._Static_vs._Dynamic_SQL | 남송휘 | 2012.05.07 | 5426 |
45 | 2._User_Call_vs._Recursive_Call | 정찬호 | 2012.05.07 | 4427 |
44 | 1._Call_통계 | 정찬호 | 2012.05.07 | 4310 |
43 | 5장._데이터베이스_Call_최소화_원리 | 운영자 | 2012.05.07 | 4321 |
42 | 11._Static_SQL_구현을_위한_기법들 | dasini | 2012.05.07 | 3736 |
41 | 4._커서_공유 | 남송휘 | 2012.04.27 | 16112 |
40 | 6._바인드_변수의_부작용과_해법 | 시와처 | 2012.04.23 | 4645 |
39 | 5._바인드_변수의_중요성 | 시와처 | 2012.04.23 | 4299 |
38 | 8._애플리케이션_커서_캐싱 | 박영창 | 2012.04.22 | 5243 |
37 | 7._세션_커서_캐싱 | 박영창 | 2012.04.22 | 7793 |
36 | 10._V$SQL | 정찬호 | 2012.04.09 | 6544 |
35 | 9._ASH(Active_Session_History) | 정찬호 | 2012.04.09 | 6071 |
34 | 4장._라이브러리_캐시_최적화_원리 | dasini | 2012.04.09 | 2721 |
33 | 12._데이터베이스_성능_고도화_정석_해법 | 남송휘 | 2012.04.09 | 4574 |
32 | 11._End-To-End_성능관리 | 남송휘 | 2012.04.09 | 3032 |
31 | 3._라이브러리_캐시_구조 | dasini | 2012.04.06 | 5232 |
30 | 2._SQL_처리과정 | dasini | 2012.04.06 | 21688 |
29 | 1._SQL과_옵티마이저 | dasini | 2012.04.06 | 3612 |
28 | 5._V$SYSSTAT | AskZZang | 2012.04.04 | 4599 |
27 | 4._DBMS_XPLAN_패키지 | AskZZang | 2012.04.04 | 5612 |