캐시 적중 정보

캐싱이 사용으로 설정된 경우 각 질의를 평가하여 캐시 적중에 적격한지 여부를 결정합니다.

캐시 적중이란, Oracle Analytics Cloud가 캐시를 사용하여 질의에 응답할 수 있었고 데이터베이스로 전혀 이동하지 않았음을 의미합니다. Oracle Analytics Cloud는 질의 캐시를 사용하여 동일하거나 더 높은 집계 레벨에서 질의에 응답할 수 있습니다.

많은 요소가 캐시 적중 여부를 결정합니다. 아래 표는 해당 요소를 설명합니다.

요소 또는 규칙 설명

SELECT 목록에 있는 열의 부분 집합이 일치해야 합니다.

새 질의의 SELECT 목록에 있는 모든 열이 캐시된 질의에 존재해야 캐시 적중에 적격합니다. 또는 질의의 열에서 계산될 수 있어야 합니다.

이 규칙은 캐시 적중의 최소 요구사항을 설명하지만 이 규칙을 충족해도 캐시 적중을 보장하지 않습니다. 이 테이블에 나열된 다른 규칙도 적용됩니다.

SELECT 목록의 열은 캐시된 질의의 열에 대한 표현식으로 구성될 수 있습니다.

Oracle Analytics Cloud는 캐시된 결과에 대한 표현식을 계산하여 새 질의에 응답할 수 있지만 모든 열이 캐시된 결과에 있어야 합니다. 예를 들어, 다음 질의의 경우:

SELECT product, month, averageprice FROM sales WHERE year = 2000

다음 질의에 캐시 적중합니다.

SELECT product, month, dollars, unitsales FROM sales WHERE year = 2000

averagepricedollarsunitsales에서 계산될 수 있기 때문입니다(averageprice = dollars/unitsales).

WHERE 절은 의미상 동일하거나 논리적 부분 집합이어야 합니다.

캐시 적중으로 적격한 질의의 경우 WHERE 절 제약 조건이 캐시된 결과와 같거나 캐시된 결과의 부분 집합이어야 합니다.

캐시된 질의의 논리적 부분 집합인 WHERE 절은 부분 집합이 다음 기준 중 하나를 충족할 때 캐시 적중에 적격합니다.

  • IN 목록 값의 부분 집합. IN 목록에 캐시된 질의보다 더 적은 요소를 요청하는 질의는 캐시 적중에 적격합니다. 예를 들어, 다음 질의의 경우:

    SELECT employeename, region
    FROM employee, geography
    WHERE region in ('EAST', 'WEST')

    다음 캐시된 질의에 대한 적중으로 적격합니다.

    SELECT employeename, region
    FROM employee, geography
    WHERE region in ('NORTH', 'SOUTH', 'EAST', 'WEST')
  • 캐시된 결과보다 더 적은(그러나 동일한) OR 제약 조건을 포함합니다.

  • 리터럴 비교의 논리적 부분 집합을 포함합니다. 예를 들어, 다음 술어의 경우:

    WHERE revenue < 1000

    다음 술어를 사용하여 비교 가능한 질의에 대한 캐시 적중으로 적격합니다.

    WHERE revenue < 5000
  • WHERE 절이 없습니다. WHERE 절이 없는 질의가 캐시된 경우 모든 다른 캐시 적중 규칙을 충족하는 질의는 WHERE 절에 관계없이 캐시 적중으로 적격합니다.

또한 WHERE 절에 사용되는 열이 프로젝션 목록에 있어야 합니다. 예를 들어, 다음 질의의 경우:

SELECT employeename
FROM employee, geography
WHERE region in ('EAST', 'WEST')

REGION이 프로젝션 목록에 없기 때문에 이전 목록의 시드 질의에 대해 캐시 적중되지 않습니다.

차원 전용 질의는 정확히 일치해야 합니다.

차원 전용 질의의 경우(사실 값 또는 측정 단위가 질의에 포함되지 않음) 캐시된 질의의 프로젝션 열과 정확히 일치해야만 캐시 적중됩니다. 이 동작은 차원 테이블의 논리적 소스가 여러 개 있을 때 가양성을 방지합니다.

특수 함수가 있는 질의는 정확히 일치해야 합니다.

시계열 함수(AGO, TODATEPERIODROLLING), 제한 및 오프셋 함수(OFFSETFETCH), 관계 함수(ISANCESTOR, ISLEAF, ISROOTISSIBLING), 외부 집계 함수 및 일반적으로 필터 측정항목과 같은 특수 함수가 포함된 질의는 캐시된 질의의 프로젝션 열과 정확히 일치해야 합니다. 이 경우 필터도 정확히 일치해야 합니다. 필터 측정항목의 경우 필터 측정항목이 WHERE 절로 재작성될 수 있는 경우 부분 집합 캐시를 활용할 수 있습니다.

논리적 테이블 집합이 일치해야 합니다.

캐시 적중으로 적격하려면 모든 수신 질의에 캐시 항목과 동일한 논리적 테이블 집합이 있어야 합니다. 이 규칙은 잘못된 캐시 적중을 방지합니다. 예를 들어 SELECT * FROM productSELECT * FROM product, sales와 일치하지 않습니다.

보안 세션 변수를 포함한 세션 변수 값이 일치해야 합니다.

논리적 SQL 또는 물리적 SQL 문이 세션 변수를 참조하는 경우 세션 변수 값이 일치해야 합니다. 그렇지 않으면 캐시 적중되지 않습니다.

또한 논리적 SQL 문 자체가 세션 변수를 참조하지 않더라도 보안에 민감한 세션 변수 값이 의미 모델에 정의된 보안 세션 변수 값과 일치해야 합니다. 행 레벨 데이터베이스 보안을 사용할 때 올바른 캐시 결과 보장을 참조하십시오.

동등한 조인 조건

새 질의 요청에서 결과상 조인된 논리적 테이블이 캐시된 결과와 동일해야(또는 부분 집합이어야) 캐시 적중에 적격합니다.

DISTINCT 속성이 동일해야 합니다.

캐시된 질의가 DISTINCT 처리로 중복 레코드를 제거하는 경우(예: SELECT DISTINCT...) 캐시된 열의 요청에도 DISTINCT 처리가 포함되어야 합니다. DISTINCT 처리 없이 동일한 열을 요청하면 캐시 실패합니다.

질의에 호환되는 집계 레벨을 포함해야 합니다.

집계된 레벨의 정보를 요청하는 질의는 더 낮은 집계 레벨에서 캐시된 결과를 사용할 수 있습니다. 예를 들어, 다음 질의는 supplier 및 region 및 city 레벨에서 판매 수량을 요청합니다.

SELECT supplier, region, city, qtysold
FROM suppliercity

다음 질의는 city 레벨에서 판매 수량을 요청합니다.

SELECT city, qtysold
FROM suppliercity

두번째 질의는 첫번째 질의에 대해 캐시 적중됩니다.

제한된 추가 집계

예를 들어, qtysold 열이 있는 질의가 캐시된 경우 RANK(qtysold) 요청은 캐시 실패합니다. 또한 country 레벨에서 qtysold를 요청하는 질의는 country, region 레벨에서 qtysold를 요청하는 질의에 대해 캐시 적중될 수 있습니다.

ORDER BY 절은 선택 목록의 열로 구성되어야 합니다.

선택 목록에 포함되지 않은 열로 정렬하는 질의는 캐시 실패합니다.

캐시 적중 동작 진단

캐시 적중 동작을 잘 평가하려면 다음 예제와 같이 ENABLE_CACHE_DIAGNOSTICS 세션 변수를 4로 설정하십시오.

ENABLE_CACHE_DIAGNOSTICS=4