구체화된 뷰 정책

이 문서에는 구체화된 뷰에서 설정할 수 있는 정책에 대한 정보가 포함되어 있습니다.

보존 및 캐싱 정책

구체화된 뷰에는 보존 정책캐싱 정책이 있습니다. 구체화된 뷰는 기본적으로 데이터베이스 보존 및 캐싱 정책을 파생합니다. 이러한 정책은 보존 정책 관리 명령 또는 캐싱 정책 관리 명령을 사용하여 변경할 수 있습니다.

두 정책은 구체화된 뷰의 구체화된 부분에 만 적용됩니다. 구체화된 부분델타 부분 간의 차이점에 대한 설명은 구체화된 뷰의 작동 방식을 참조하세요. 예를 들어 구체화된 뷰의 캐싱 정책이 7d로 설정되어 있지만 원본 테이블의 캐싱 정책이 0d로 설정된 경우 구체화된 뷰를 쿼리할 때 디스크 누락이 계속 발생할 수 있습니다. 이 동작은 원본 테이블(델타 부분)도 쿼리에 참여하기 때문에 발생합니다.

구체화된 뷰의 보존 정책은 원본 테이블의 보존 정책과 관련이 없습니다. 원본 레코드가 더 짧은 기간 동안 필요한 경우 원본 테이블의 보존 정책은 구체화된 뷰의 보존 정책보다 짧을 수 있습니다. 최소 보존 정책은 며칠 이상, 복구 가능성은 원본 테이블에서 true로 설정하는 것이 좋습니다. 이 설정을 사용하면 오류 및 진단 목적으로 빠르게 복구할 수 있습니다.

참고

원본 테이블에 대한 0 보존 정책은 지원되지 않습니다.

보존 및 캐싱 정책은 모두 익스텐트 생성 시간에 따라 달라집니다. 레코드의 마지막 업데이트는 구체화된 뷰의 익스텐트 생성 시간을 결정합니다.

참고

구체화 프로세스는 뷰의 구체화된 부분에 대한 업데이트 양을 최소화하려고 시도합니다. 보기에서 레코드를 업데이트할 필요가 없는 경우 업데이트되지 않습니다. 예를 들어 구체화된 뷰가 집계인 take_any(*) 경우 동일한 그룹별 키의 새 레코드는 뷰에 다시 수집되지 않으므로 보존 정책은 가장 빠른 레코드 수집에 의해 수집됩니다.

분할 정책

분할 정책은 구체화된 뷰에 적용할 수 있습니다. 구체화된 뷰 쿼리의 대부분 또는 전부가 구체화된 뷰의 그룹별 키 중 하나를 기준으로 필터링하는 경우에만 구체화된 뷰에서 분할 정책을 구성하는 것이 좋습니다. 이 상황은 구체화된 뷰의 그룹별 키 중 하나가 테넌트의 식별자(예 tenantId: , customerId)인 다중 테넌트 솔루션에서 일반적입니다. 자세한 내용은 분할 정책 지원 시나리오 페이지에 설명된 첫 번째 사용 사례를 참조하세요.

구체화된 뷰의 분할 정책을 변경하는 명령은 분할 정책 명령을 참조하세요.

구체화된 뷰에 분할 정책을 추가하면 구체화된 뷰의 익스텐트 수가 증가하고 구체화 프로세스에 대한 더 많은 "작업"이 생성됩니다. 이 동작의 이유에 대한 자세한 내용은 구체화된 뷰의 작동 방식에 언급된 익스텐트 다시 작성 프로세스를 참조하세요.

행 수준 보안 정책

구체화된 뷰에 행 수준 보안을 적용할 수 있으며 몇 가지 제한 사항이 있습니다.

  • 정책은 arg_max()arg_min()/take_any(/) 집계 함수를 사용하여 구체화된 뷰에만 적용하거나 행 수준 보안 쿼리가 구체화된 뷰 집계의 키로 그룹을 참조하는 경우에만 적용할 수 있습니다.
  • 정책은 뷰의 구체화된 부분에 만 적용됩니다.
    • 구체화된 뷰의 원본 테이블에 동일한 행 수준 보안 정책이 정의되지 않은 경우 구체화된 뷰를 쿼리하면 정책에서 숨겨야 하는 레코드가 반환될 수 있습니다. 구체화된 뷰를 쿼리하면 원본 테이블도 쿼리하기 때문에 이런 일이 발생합니다.
    • 뷰가 arg_max() 또는 arg_min()/ take_any()인 경우 원본 테이블과 구체화된 뷰 모두에서 동일한 행 수준 보안 정책을 정의하는 것이 좋습니다.
  • arg_max() 또는 arg_min()/take_any() 구체화된 뷰의 원본 테이블에서 행 수준 보안 정책을 정의할 때 구체화된 뷰 자체에 정의된 행 수준 보안 정책이 없으면 명령이 실패합니다. 이 오류의 목적은 구체화된 뷰가 정보를 노출할 수 있으므로 잠재적인 데이터 누출을 사용자에게 경고하는 것입니다. 이 오류를 완화하려면 다음 작업 중 하나를 수행합니다.
    • 구체화된 뷰에 대한 행 수준 보안 정책을 정의합니다.
    • alter policy 명령에 속성을 추가하여 allowMaterializedViewsWithoutRowLevelSecurity 오류를 무시하도록 선택합니다. 예를 들면 다음과 같습니다.
    .alter table SourceTable policy row_level_security enable with (allowMaterializedViewsWithoutRowLevelSecurity=true) "RLS_function"

구체화된 뷰에서 행 수준 보안 정책을 구성하는 명령은 row_level_security 정책 명령을 참조하세요.