COMPATIBLE

  • 정의 : 오라클 버전 별 설정 값을 지정하며 이는 실제로 구문이나 기능의 제한
  • mview와 COMPATIBLE 사이의 관계
    1. Error : REWRITE_TABLE is not compatible with Oracle version
    2. Error Code: ORA-30381
    3. Cause: One or more column definitions in the REWRITE_TABLE is either missing or incompatible with the current Oracle version.
    4. Solution: Connect to the appropriate schema, DROP TABLE REWRITE_TABLE and recreate it by invoking the admin/utlxrw.sql script prior to invoking the DBMS_MVIEW.EXPLAIN_REWRITE() API.

QUERY_REWRITE_ENABLED

  • mview(Materialized View) 정의 : 쿼리와 그 결과 값이 물리적인 공간(새로운 테이블)에 저장되는 view
    1. 대상 : 대용량의 데이터에서 빈번하게 SUM, MIN, MAX, AVG, COUNT(*) 등의 AGGREGATE FUNCTION을 사용하는 쿼리와 그 결과
    2. 장점 : AGGREGATE FUNCTION 사용 시 COST가 높기 때문에, cost를 낮출 수 있는데, 이는 REPLICATE 가 가능하여 SNAPSHOT 처럼 사용이 가능함을 의미
    3. MVIEW는 쿼리를 실행 할 때마다 매번 join이나, Aggregation 연산(예: SUM, COUNT 등)을 수행하지 않고, 미리 계산된 값으로 쿼리를 수행하기 때문에 성능 향상을 가져올 수 있으며, optimizer는 MVIEW가 어느 때 사용되는 것이 적절한지를 판단할 수 있게 설계 됨

  • Query Rewrite : 쿼리 재작성 또는 덮어쓰기. 이미 생성 된 뷰의 쿼리를 재작성
    1. 이 작업은 Optimizer에 의해 내부적으로 수행되므로 cost-based optimization 모드에서만 가능
    2. Materialized View를 만들기 위해선 해당 Table이 반드시 Analyze 되어 있어야 함.
    3. Query rewrite 환경이 적절히 셋업 되어 있다면, 대량 대이터에 대한 복잡한 쿼리 응답 속도를 획기적으로 개선할 수 있게 한다.


  • QUERY_REWRITE_ENABLED
    1. 정의 : 9i 에서 function-based index나 mview에 대해서 Query의 Rewrite 가능하게 설정
    2. index column에 Function을 사용하는 function-based index를 사용 가능하게 함
    3. mview와 조건절이 같은 경우 master table을 scan하지 않고 mview를 읽도록 하는 내부적인 처리 가능
    4. 적용
      • false : 비활성화 (9.2.0 이하 버전에서 기본 값)
      • true : rewrite할 때와 하지 않을 때의 비용을 산정하여 최소비용이 드는 방법을 선택(10g 이상에서 기본 값). Rewrite가 수행되지 않을 수도 있음
      • force : 비용에 대한 고려 없이 강제적으로 rewrite 실행
      • 변경 방법

 ALTER SYSTEM SET QUERY_REWRITE_ENABLED='TRUE';



  • QUERY_REWRITE_INTEGRITY
    1. 정의 : Query Rewrite의 정확성을 제어하는 파라미터로 선택적으로 지정 가능
    2. 의미
      1. TRUSTED : optimizer에서 MVIEW의 데이터가 정확하다고 간주하고 질의 수행. Integrity 확인을 하지 않음. mv 동기화와 보존화와는 관계없이 query rewrite허용.
      2. ENFORCED: 기본값. mv동기화와 보존화를 보증할 때만 Query rewrite허용. 사용자가 integrity constraint를 확인하여야 한다. MVIEW는 fresh한 데이터를 포함하여야 한다.
      3. STALE_TOLERATED : Optimizer에서 데이터가 stale 상태이거나 fresh 상태인 경우 모두 MVIEW 사용
      4. 테스트 : http://ukja.tistory.com/264

문서에 대하여

  • 최초작성자 : 박혜은
  • 최초작성일 : 2009년 11월 19일
  • 이 문서에 있는 테스트 결과는 DBMS버전과 구성된 환경에 따라 다를 수 있습니다.