REFRESH TABLE문
REFRESH TABLE문은 구체화된 쿼리 테이블의 데이터를 새로 고침합니다.
호출
이 명령문은 애플리케이션 프로그램에 임베드되거나 동적 SQL문을 사용하여 실행할 수 있습니다. 이 명령문은 동적으로 준비할 수 있는 실행문입니다.
권한 부여
명령문의 권한 부여 ID가 보유한 특권은 다음 중 하나 이상을
포함해야 합니다.
- 테이블에 대해 CONTROL 특권
- 구체화된 쿼리 테이블이 포함된 스키마에 대한 DATAACCESS 권한
- DATAACCESS 권한
구문
설명
- table-name
- 새로 고침할 테이블을 식별합니다.내재된 또는 명시적 스키마 이름을 포함하는 이름은 현재 서버에 이미 존재하는 테이블을 식별해야 합니다. 테이블은 REFRESH TABLE문을 허용해야 합니다(SQLSTATE 42809). 여기에는 다음으로 정의된 구체화된 쿼리 테이블을 포함합니다.
- REFRESH IMMEDIATE
- REFRESH DEFERRED
- 온라인 옵션
- 처리 중 테이블의 액세스 기능을 지정합니다.
- ALLOW NO ACCESS
- 테이블이 새로 고침되는 동안 사용자가 테이블에 액세스할 수 없음을 지정하며 테이블이 커미트되지 않은 읽기(UR) 격리 레벨을 사용하는 중인 경우는 제외합니다.
- ALLOW READ ACCESS
- 테이블이 새로 고침되는 동안 다른 사용자가 테이블에 대한 읽기 전용 액세스를 보유함을 지정합니다.
- ALLOW WRITE ACCESS
- 테이블이 새로 고침되는 동안 다른 사용자가 테이블에 대한 읽기 및 쓰기 액세스를 보유함을 지정합니다.
- query-optimization-options
- REFRESH
DEFERRED 구체화된 쿼리 테이블의 새로 고침을 위한 쿼리 최적화
옵션을 지정합니다.
- ALLOW QUERY OPTIMIZATION USING REFRESH DEFERRED TABLES WITH REFRESH AGE ANY
- CURRENT REFRESH AGE 특수 레지스터가 'ANY'로 설정되고 table-name이 REFRESH DEFERRED 구체화된 쿼리 테이블을 사용하여 table-name을 새로 고침하기 위해 사용되는 쿼리를 최적화할 수 있도록 지정합니다. table-name이 REFRESH DEFERRED 구체화된 쿼리 테이블이 아닌 경우, 오류가 리턴됩니다(SQLSTATE 428FH). REFRESH IMMEDIATE 구체화된 쿼리 테이블은 쿼리 최적화에 대하여 항상 간주됩니다.
- INCREMENTAL
- 기본 테이블의 델타 분할 영역(해당하는 경우) 또는 연관된 스테이징 테이블의 컨텐츠(이것이 존재하고 해당 컨텐츠가 일관성 있는 경우)만 간주하여 테이블에 대한 증분 새로 고침을 지정합니다. 이러한 요청이 만족될 수 없는 경우(즉, 시스템이 구체화된 쿼리 테이블 정의가 완전히 재적용되어야 함을 감지하는 경우), 오류(SQLSTATE 55019)가 리턴됩니다.
- NOT INCREMENTAL
- 구체화된 쿼리 테이블 정의를 재계산하여 테이블에 대한 완전 새로 고침을 지정합니다.
INCREMENTAL도 NOT INCREMENTAL도 지정되지 않은 경우, 시스템은 증분 처리가 가능한지 여부를 판별합니다. 아닌 경우, 완전 새로 고침이 수행됩니다. 새로 고침할 구체화된 쿼리 테이블에 스테이징 테이블이 있고 스테이징 테이블이 보류 상태라 증분 처리가 불가능한 경우, 오류가 리턴됩니다(SQLSTATE 428A8). 스테이징 테이블 또는 구체화된 쿼리 테이블이 불일치 상태인 경우 완전 새로 고침이 수행됩니다. 아니면, 스테이징 테이블의 컨텐츠가 증분 처리에 사용됩니다.
규칙
- 하나 이상의 별칭을 참조하는 구체화된 쿼리 테이블에서 REFRESH TABLE이 발행되는 경우, 명령문의 권한 부여 ID에는 데이터 소스에 있는 테이블에서 또는 데이터 소스에 있는 테이블의 모든 스키마에서 선택할 수 있는 권한이 있어야 합니다 (SQLSTATE 42501).
- 시스템 유지보수 컬럼 구성 MQT에서 REFRESH TABLE이 발행되는 경우 NOT INCREMENTAL절을 사용해야 합니다.
참고
- 기본 테이블이 로드되거나 접속되거나 분리된 구체화된 쿼리 테이블을 새로 고침하기 위해 명령문이 사용되는 경우, 시스템은 구체화된 쿼리 테이블을 기본 테이블의 델타 분할 영역으로 점점 새로 고침하도록 선택할 수 있습니다. REFRESH DEFERRED 구체화된 쿼리 테이블이 스테이징 테이블을 지원하도록 새로 고침하기 위해 명령문이 사용되는 경우, 시스템은 스테이징 테이블에 캡처된 기본 테이블의 델타 분할 영역으로 구체화된 쿼리 테이블을 점점 새로 고침하도록 선택할 수 있습니다. 그러나 이 최적화가 불가능한 상황이 있는 경우 완전 새로 고침(즉, 구체화된 쿼리 테이블 정의 쿼리의 재적용)으로 데이터 무결성을 확인해야 합니다. INCREMENTAL 옵션을 지정하여 명시적으로 증분 유지보수를 요청할 수 있습니다. 이 최적화가 불가능한 경우 시스템은 오류를 리턴합니다 (SQLSTATE 55019).
- ALLOW QUERY OPTIMIZATION USING REFRESH DEFERRED TABLES WITH REFRESH AGE ANY 옵션이 사용되는 경우, 새로 고침 순서가 REFRESH DEFERRED 구체화된 쿼리 테이블에 대해 올바른지 확인하십시오. 예를 들어, 구체화된 쿼리에서 동일 기본 테이블을 공유하는 두 개의 구체화된 쿼리 테이블, MQT1, MQT2를 고려할 수 있습니다. MQT2에 대한 구체화된 쿼리는 기본 테이블 대신 MQT1을 사용하여 계산할 수 있습니다. 이 두 구체화된 쿼리 테이블을 새로 고침하기 위해 각 명령문이 사용되고 MQT2가 먼저 새로 고침되면 시스템은 MQT2를 새로 고침하기 위해 아직 새로 고침되지 않은 MQT1의 컨텐츠를 사용하도록 선택합니다. 이러한 경우, MQT1은 현재 데이터를 포함하게 되나 MQT2는 둘 다 거의 동시에 새로 고침 되더라도 계속 부실한 데이터를 보유할 수 있습니다. 두 REFRESH문이 하나 대신 사용되는 경우 올바른 새로 고침 순서로 MQT1이 먼저 새로 고침됩니다.
- 구체화된 쿼리 테이블에 연관된 스테이징 테이블이 있는 경우, 새로 고침이 성공적으로 수행되면 스테이징 테이블이 프룬됩니다.
- 액세스 제어 또는 구체화된 쿼리 테이블에 대한 레이블 기반 액세스 제어는 새로 고침 프로세스를 방해하지 않습니다. 레이블 기반 액세스 제어가 존재하지 않았던 것처럼 새로 고침이 발생합니다. 구체화된 쿼리 테이블과 연결된 자동 보호가 작성된 경우, 이는 기본 테이블의 데이터가 구체화된 쿼리 테이블로 전달될 때 계속 보호되도록 합니다.
- 구체화된 쿼리 테이블의 경우에만, SET INTEGRITY FOR mqt_name IMMEDIATE CHECKED가 REFRESH TABLE mqt_name과 동일합니다.
- 구체화된 쿼리 테이블의 새로 고침 사용: 구체화된 쿼리 테이블은 REFRESH TABLE문의 처리 중에 select-statement를 평가하는 데에 사용되지 않습니다.
- 격리 레벨 새로 고침: select-statement를 평가하기 위해 사용되는 격리 레벨은 select-statement의 isolation-level 절에 지정된 격리 레벨입니다. 또는 isolation-level 절이 지정되지 않은 경우, CREATE T ABLE 또는 ALTER TABLE이 발행될 때 기록된 구체화된 쿼리 테이블의 격리 레벨은 select-statement를 평가하기 위해 사용됩니다.
- 명령문 고려사항:
다음 시나리오에서 T가 구체화된 쿼리 테이블(MQT) 또는 스테이징 테이블인 경우, T에 대한 INCREMENTAL 검사 옵션 또는 T의 증분식 새로 고침이 지원되지 않습니다.SET INTEGRITY FOR T IMMEDIATE CHECKED- 무결성 설정 보류 상태인 동안 새 제한조건이 T에 추가된 경우
- T, 해당 상위 또는 기본 테이블에 대해 LOAD REPLACE 조작이 수행된 경우
- T, 해당 상위 또는 기본 테이블에서 마지막 무결성 검사 후 NOT LOGGED INITIALLY WITH EMPTY TABLE 옵션이 활성화된 경우
- T의 상위(T가 구체화된 쿼리 테이블이나 스테이징 테이블인 경우 기본 테이블)에서 비증분식 무결성을 검사한 경우 전체 처리의 연쇄 효과
- 테이블이나 해당 상위(또는 구체화된 쿼리 테이블이나 스테이징 테이블의 기본 테이블)를 포함하는 테이블스페이스가 특정 시점까지 롤 포워드되고, 테이블 및 해당 상위(또는 구체화된 쿼리 테이블이나 스테이징 테이블인 경우 기본 테이블)는 다른 테이블스페이스에 상주하는 경우
- T가 MQT이고 마지막 새로 고침 후 T로의 직접 LOAD REPLACE 또는 LOAD INSERT 조작이 수행된 경우
- 보다 효과적이기 때문에 상황이 허용될 때마다 증분식 처리가 사용됩니다. INCREMENTAL 옵션은 대부분의 경우 필요하지 않습니다. 그러나 필요한 경우, 무결성 검사가 증분식으로 처리됩니다. 데이터 무결성을 확인하기 위해 전체 처리가 필요하다고 시스템이 감지하면 오류가 리턴됩니다(SQLSTATE 55019).
- 이전 글머리 기호에 설명된 전체 처리 조건이 충족되지 않으면, 사용자가
SET INTEGRITY FOR T IMMEDIATE CHECKED명령문에 대해 NOT INCREMENTAL 옵션을 지정하지 않은 경우 시스템은 증분식 새로 고침(구체화된 쿼리 테이블인 경우)을 수행합니다.
