- result_cache 옵션을 추가하면 동일한 쿼리를 실행할때 캐쉬에서 결과를 가져오므로 처리속도가 아주 빠르다.
--1 Cache and parallel are only in oracle enterprise editions
--also the DBA make changes in these values
# result_cache 옵션 사용은 아래 3개의 파라미터와 밀접한 관계가 있으므로
# dba가 설정을 적절히 정해야만 원하는 결과를 얻을수 있다
--parameter shared_pool_size
--parameter result_cache_max_size
--parameter result_cache_mode
create or replace function get_sum_sal_dept
( dept_id number )
return number result_cache
is
v_sal number;
begin
select sum(salary)
into v_sal
from
employees
where department_id =dept_id;
return v_sal;
end;
select get_sum_sal_dept(10) from dual;
select get_sum_sal_dept(20) from dual;
select get_sum_sal_dept(30) from dual;
# 캐쉬에서 결과를 다시 가져오므로 처리 속도가 아주 빨름.
--now when you do :
select get_sum_sal_dept(10) from dual;
--it should be faster because the resulte is stored in cashe,
# 여기서 의문이 생깁니다. 만약에 테이블에 변경이 발생했는데, 그걸 그대로 캐쉬에서 가져오면 어떻게 하나요?
# 그래서 생긴 옵션이 relies_on (테이블명) 입니다.
# 오라클에서는 이걸 11g 부터는 자동으로 감시하게 되어 있습니다.
# 11g 부터는 아래 코드 처럼 추가를 해도, 안해도 결과는 문제가 없습니다.
# 테이블의 변동사항이 있다면 자동으로 다시 계산/쿼리를 실행합니다.
--relies_on (employees) is optional
--This option has become obsolete since version 11G release 2.
--The database figures out where the function relies on.
--You can still include the relies_on clause,
--but it will be for documentation purposes only.
create or replace function get_sum_sal_dept
( dept_id number )
return number result_cache relies_on (employees)
is
v_sal number;
begin
select sum(salary)
into v_sal
from
employees
where department_id =dept_id;
return v_sal;
end;
------------
이런 옵션이 있다는 정도만 알고 넘어감.
'Database > PLSQL' 카테고리의 다른 글
074 - [Oracle PL/SQL] Bulk Binding (0) | 2024.04.23 |
---|---|
073 - [Oracle PL/SQL] DETERMINISTIC hint (0) | 2024.04.10 |
071 - [Oracle PL/SQL] PARALLEL_ENABLE hint (0) | 2024.04.10 |
070 - [Oracle PL/SQL] NOCOPY - 성능차이. (0) | 2024.04.10 |
069 - [Oracle PL/SQL] NOCOPY 예외상황 (0) | 2024.04.10 |