RESULT CACHE 기능의 개요
RESULT CACHE란 말을 그대로 번역하면 결과를 캐시(혹은 캐싱)한다는 뜻이다. 캐시란 데이터나 값을 임시로 저장해 놓는 공간을 말하며 오라클 역시 캐시 메모리를 갖고 있다. 따라서 RESULT CACHE는 결과 값을 임시 장소에 저장해 놓은 다음 재사용하는 기능을 말한다.
직전에 설명했듯이 동일한 데이터를 가져오는 경우라면 한 번만 호출하면 될 것을 굳이 1,000번까지 호출할 필요가 없다. RESULT CACHE가 바로 이런 기능이며 큰 성능 향상 효과를 볼 수 있다. 오라클에서는 두 가지 형태로 RESULT CACHE 기능을 제공하는데 여기서는 함수 형태를 살펴볼 것이다(또 다른 한 가지는 SQL문에서 직접 사용하는 형태인데 이를 위해서는 오라클 힌트를 사용한다). RESULT CACHE 기능을 사용하는 함수의 형태는 다음과 같다.
CREATE OR REPLACE FUNCTION 함수명(매개변수1, ...)
RETURN 반환 타입
RESULT_CACHE
RELIES_ON (참조 테이블1, ...)
IS
BEGIN
...
END;
굵게 표시한 부분만 제외하면 일반 함수 구문과 다른 점이 없다. RESULT_CACHE 절을 명시하고 함수 정의 부분에서 참조하는 테이블을 RELIES_ON절에 나열하기만 하면 된다. RESULT CACHE 기능을 사용하므로 RESULT_CACHE 절을 명시하는 것은 당연한데 RELIES_ON 절은 왜 사용하는 것일까?
RESULT CACHE 기능의 주 목적은 동일한 매개변수가 들어올 때 데이터의 재사용에 있다. 예를 들어, 부서번호 10번에 해당하는 부서명을 캐시에 저장해 놓으면 동일한 매개변수로 다시 함수를 호출하더라도 실제로 이 함수를 수행하지 않고 캐시에서 꺼내 쓰기만 하면 된다. 그런데, 어느 순간에 부서 테이블에서 10번 부서의 부서명이 총무기획부에서 총무부로 바뀌었다면 어떻게 해야 할까? 당연히 캐시에 있는 값을 사용하지 말고 다시 부서 테이블에서 변경된 부서명을 가져와야 한다. 이런 목적으로 명시하는 것이 바로 RELIES_ON 절이다. 즉 해당 테이블(여기서는 부서 테이블)에 의존(RELY ON)하고 있으니 원천 데이터가 바뀌면 데이터를 다시 가져온다는 의미다.