7._Result_캐시
2012.05.27 11: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 | 부록 | 남송휘 | 2012.06.05 | 2708 |
65 | 8._IO_효율화_원리 | 운영자 | 2012.06.05 | 4426 |
64 |
3._Deterministic_함수_사용_시_주의사항
![]() | 정찬호 | 2012.05.29 | 4351 |
63 | 2._Cursor_Sharing | 운영자 | 2012.05.28 | 6276 |
» | 7._Result_캐시 | 운영자 | 2012.05.27 | 4426 |
61 |
3._Single_Block_vs._Multiblock_IO
![]() | 정찬호 | 2012.05.22 | 4229 |
60 |
2._Memory_vs._Disk_IO
![]() | 정찬호 | 2012.05.22 | 4446 |
59 |
1._블록_단위_IO
![]() | 정찬호 | 2012.05.22 | 4209 |
58 |
6장._IO_효율화_원리
![]() | 정찬호 | 2012.05.22 | 4085 |
57 |
1._Library_Cache_Lock_Pin
![]() | 남송휘 | 2012.05.21 | 4290 |
56 |
6._RAC_캐시_퓨전
![]() | 남송휘 | 2012.05.21 | 17797 |
55 | 5._Direct_Path_IO | 남송휘 | 2012.05.21 | 7932 |
54 |
4._Prefetch
![]() | 남송휘 | 2012.05.21 | 3889 |
53 | 8._PLSQL_함수_호출_부하_해소_방안 | 남송휘 | 2012.05.21 | 3773 |
52 | 5._Fetch_Call_최소화 [1] | 박영창 | 2012.05.15 | 6065 |
51 |
7._PLSQL_함수의_특징과_성능_부하
![]() | 남송휘 | 2012.05.14 | 6935 |
50 | 6._페이지_처리의_중요성 | 남송휘 | 2012.05.14 | 3379 |
49 | 4._Array_Processing_활용 | 시와처 | 2012.05.13 | 4042 |
48 |
3._데이터베이스_Call이_성능에_미치는_영향
![]() | 시와처 | 2012.05.13 | 3645 |
47 |
10._Dynamic_SQL_사용_기준
![]() | 남송휘 | 2012.05.07 | 4556 |