다음은 동일한 SELECT 문에 대해 캐시된 수행 결과를 제공하는 쿼리 캐시 기능과 관련된 파라미터로 각 파라미터의 타입과 설정 가능한 값의 범위는 다음과 같다.
파라미터 이름 |
타입 |
디폴트 값 |
최소값 |
최대값 |
---|---|---|---|---|
max_plan_cache_entries |
int |
1,000 |
|
|
max_query_cache_entries |
int |
-1 |
|
|
query_cache_mode |
int |
0 |
0 |
2 |
query_cache_size_in_pages |
int |
-1 |
|
|
max_plan_cache_entries는 메모리에 캐시하는 쿼리 플랜의 최대 개수를 설정하는 파라미터이다. max_plan_cache_entries 파라미터가 -1이나 0으로 설정되면 작성된 쿼리 플랜을 메모리 캐시에 저장하지 않는 것이며, 1 이상의 정수값이 설정되면 설정된 개수만큼의 쿼리 플랜을 메모리 캐시한다. 또한, 이 파라미터의 값이 1 이상의 정수값으로 설정되어야 동일한 쿼리에 대한 결과를 캐시하는 쿼리 캐시 기능을 적용할 수 있다.
max_query_cache_entries는 쿼리 캐시 기능을 적용할 쿼리의 최대 개수를 지정하는 파라미터로 -1이나 0으로 설정하면 쿼리 캐시 기능을 비활성화시키는 것이고, 1 이상의 정수값으로 설정하면 설정된 개수만큼의 쿼리에 대해 수행 결과를 캐시한다. 쿼리 캐시 기능은 조회 데이터가 변하지 않고, 동일한 쿼리가 반복적으로 입력되는 경우에 성능 향상을 기대할 수 있다. 쿼리 캐시 기능은 쿼리 플랜 캐시 기능에 종속적이므로 쿼리 플랜 캐시 기능을 활성화시키는 max_plan_cache_entries 파라미터 값이 1 이상의 정수로 설정되어야 쿼리 캐시 관련 파라미터의 설정이 적용된다는 점에 주의한다.
query_cache_mode는 두 가지의 쿼리 캐시 모드 중 하나를 지정하기 위한 파라미터로 제 1 쿼리 캐시 모드는 모든 쿼리에 대해 쿼리 캐시 기능을 적용하는 것이고, 제 2 쿼리 캐시 모드는 /*+ QUERY_CACHE(1) */이라는 힌트가 주어진 쿼리에 대해서만 쿼리 캐시 기능을 적용하는 것이다. 이 파라미터를 디폴트 값인 0으로 설정하면 쿼리 캐시 기능이 비활성화되고, 1로 설정하면 제 1 쿼리 캐시 모드로 수행되며, 2로 설정하면 제 2 쿼리 캐시 모드로 수행된다. 쿼리 캐시 기능을 활성화하려면 1) max_plan_cache_entries를 1 이상의 값으로 설정해야 하고, 2) max_query_cache_entries를 1 이상의 값으로 설정해야 하며, 3) query_cache_mode를 1 이상의 값으로 설정해야 한다. 이 중 어느 하나의 파라미터라도 조건을 만족하지 않으면 쿼리 캐시 기능은 비활성화되므로 주의한다.
// 최대 1,000개의 쿼리에 대해 플랜 캐시 기능을 수행하고, 최대 100개의 쿼리에 대해 쿼리 캐시 기능을 수행하는 예제이다.
max_plan_cache_entries=1000
max_query_cache_entries=100
query_cache_mode=1
// 플랜 캐시 기능이 비활성화되어 있으므로,쿼리 캐시와 관련된 두 파라미터의 설정값은 의미없다.
max_plan_cache_entries=-1
max_query_cache_entries=100
query_cache_mode=1
// 최대 1,000개의 쿼리에 대해 플랜 캐시 기능을 수행하고, 쿼리 캐시 기능은 비활성화된다.
max_plan_cache_entries=1000
max_query_cache_entries=100
query_cache_mode=0
query_cache_size_in_pages는 캐시할 수행 결과 페이지를 지정하기 위한 파라미터로 지정된 페이지 이내의 수행 결과를 가지는 경우에만 쿼리 캐시 기능을 적용한다. 디폴트 값인 -1로 설정하면 수행 결과의 페이지 크기에 대한 제약 없이 모든 쿼리에 대해 쿼리 캐시를 수행한다.