검색 최적화된 테이블 작업

검색 최적화된 테이블 작업

검색 최적화는 일반적으로 사용자에게 투명합니다. 쿼리는 동일하게 작동하며 일부만 더 빠릅니다. 그러나 다른 테이블 작업이 검색 최적화 서비스에 미치는 영향 또는 그 반대의 영향을 인지하는 것이 중요합니다.

출처: Snowflake 문서

본문

테이블 수정

열의 기본값이 변경되면 검색 액세스 경로는 유효하지 않게 됩니다.

검색 액세스 경로가 유효하지 않게 된 후 검색 최적화를 다시 사용하려면 SEARCH OPTIMIZATION 속성을 드롭 하고 테이블에 SEARCH OPTIMIZATION 속성을 다시 추가 해야 합니다.

열을 추가, 드롭, 이름 변경하면 검색 액세스 경로는 유효한 상태로 유지됩니다.

  • 특정 열을 지정하지 않고 전체 테이블에 대해 검색 최적화를 활성화했다면, 테이블에 열을 추가할 때 새 열이 검색 액세스 경로에 자동으로 추가됩니다. 그러나 열에 대해 검색 최적화를 활성화할 때 ON 절을 사용했다면 새 열은 자동으로 추가되지 않습니다.
  • 테이블에서 열을 드롭하면 드롭된 열이 검색 액세스 경로에서 자동으로 제거됩니다.
  • 열 이름을 변경해도 검색 액세스 경로는 변경이 필요하지 않습니다.

테이블을 드롭하면 SEARCH OPTIMIZATION 속성과 검색 액세스 경로도 드롭됩니다. 다음 사항에 유의하세요.

  • 테이블을 언드롭(undrop)하면 테이블의 속성으로 검색 최적화가 즉시 다시 설정됩니다.
  • 테이블을 드롭할 때 검색 액세스 경로는 테이블과 동일한 데이터 보존 기간을 갖습니다.

테이블에서 SEARCH OPTIMIZATION 속성을 드롭 하면 검색 액세스 경로가 제거됩니다. 테이블에 SEARCH OPTIMIZATION 속성을 다시 추가 하면 유지 관리 서비스가 검색 액세스 경로를 다시 만들어야 합니다. (속성을 언드롭할 방법은 없습니다.)

테이블, 스키마 또는 데이터베이스 복제(Clone)

테이블, 스키마 또는 데이터베이스를 복제하면 각 테이블의 SEARCH OPTIMIZATION 속성과 검색 액세스 경로도 복제됩니다. 테이블, 스키마 또는 데이터베이스를 복제하면 각 테이블과 그에 대응하는 검색 액세스 경로의 제로-카피 복제(zero-copy clone) 가 생성됩니다. 그러나 복제가 생성될 때 테이블의 검색 액세스 경로가 오래된(out-of-date) 경우, 원본 테이블과 복제된 테이블 모두 검색 액세스 경로를 업데이트하기 위한 검색 최적화 서비스의 유지 관리 비용을 부담합니다.

DML 작업이 복제 작업 직전에 테이블을 크게 수정하면 검색 액세스 경로가 오래될 수 있습니다. 예를 들어 INSERT 문이 원본 테이블 크기를 크게 증가시킨다면 검색 액세스 경로는 이 변경을 반영하기 위해 유지 관리가 필요합니다.

복제된 복제 테이블의 검색 액세스 경로에 대해서는 제로-카피 복제가 생성되지 않습니다. 자세한 내용은 보조 데이터베이스의 테이블 작업(데이터베이스 복제 지원) 을 참고하세요.

복제된 테이블에서 검색 최적화 유지 관리 작업의 비용을 피하거나 최소화하려면 다음 단계 중 하나 또는 둘 다를 따르세요.

  1. 복제된 테이블에서 검색 최적화를 활성 상태로 유지해야 한다면, CREATE TABLE … CLONE 문을 실행하기 전에 검색 액세스 경로가 최신인지 확인하세요. 그렇지 않으면 다음 단계로 건너뛰세요. 대부분의 경우 SHOW TABLES 문을 실행하고 SEARCH_OPTIMIZATION_PROGRESS 열의 값을 확인할 수 있습니다. 열의 값이 100이면 검색 액세스 경로가 최신입니다. 그러나 삭제된 소스 테이블 데이터에 대한 정보를 제거하기 위해 검색 액세스 경로가 압축(compact)되고 있다면 유지 관리 비용이 발생할 수 있습니다.
  2. 복제가 생성된 직후 복제된 테이블에서 검색 최적화 서비스를 비활성화하세요. 예를 들어 테이블 t1에서 검색 최적화 서비스를 비활성화하려면 다음 문을 실행하세요.
ALTER TABLE t1 DROP SEARCH OPTIMIZATION;

자세한 내용은 ALTER TABLE 주제의 검색 최적화 작업(searchOptimizationAction) 을 참고하세요.

CREATE TABLE … LIKE를 사용해 원본 테이블과 같은 열의 새 빈 테이블을 만들면 SEARCH OPTIMIZATION 속성은 새 테이블로 복사되지 않습니다.

보조 데이터베이스의 테이블 작업(데이터베이스 복제 지원)

기본 데이터베이스의 테이블에 SEARCH OPTIMIZATION 속성이 활성화되어 있으면 속성이 보조 데이터베이스의 해당 테이블로 복제됩니다.

보조 데이터베이스의 검색 액세스 경로는 복제되지 않고 대신 자동으로 다시 구축됩니다. 이는 복제된 복제 테이블에도 적용됩니다. 복제는 복제된 검색 액세스 경로에 대해 제로-카피 복제 를 생성하지 않고 보조 데이터베이스에서 완전히 다시 구축합니다. 복제된 검색 액세스 경로에 대한 이후의 유지 관리는 기본 데이터베이스에서 복제되지 않고 보조 데이터베이스에서 수행됩니다. 이 프로세스는 검색 최적화 비용 추정 및 관리 에 설명된 것과 같은 종류의 비용을 발생시킵니다.

테이블 공유

데이터 제공자는 Secure Data Sharing 을 사용해 검색 최적화가 활성화된 테이블을 공유할 수 있습니다.

공유 테이블을 쿼리할 때 데이터 소비자는 검색 최적화 서비스가 만드는 모든 성능 개선의 혜택을 받을 수 있습니다.

마스킹 정책 및 행 액세스 정책

검색 최적화 서비스는 마스킹 정책과 행 액세스 정책을 사용하는 테이블과 완전히 호환됩니다.

그러나 검색 최적화가 활성화되면 마스킹 정책 또는 행 액세스 정책으로 값을 보지 못하는 사용자가 그 값이 존재하는지 여부를 더 높은 확신으로 추론할 수 있습니다. 검색 최적화가 있든 없든, 쿼리 지연 시간의 차이는 정책으로 제한된 데이터의 존재 여부에 대한 단서를 제공할 수 있으며, 데이터의 민감도에 따라 보안 문제를 구성할 수 있습니다. 검색 최적화는 결과를 반환하지 않는 쿼리를 더욱 빠르게 만들 수 있으므로 이 효과를 증폭시킬 수 있습니다.

예를 들어 행 액세스 정책이 사용자가 country = 'US'인 행에 접근하는 것을 막지만 데이터에는 country = 'US'인 행이 포함되어 있지 않다고 가정해 보세요. 이제 country 열에 대해 검색 최적화가 활성화되어 있고 사용자가 WHERE country = 'US'로 쿼리를 실행한다고 가정해 보세요. 쿼리는 예상대로 빈 결과를 반환하지만, 검색 최적화가 있으면 없을 때보다 쿼리가 더 빠르게 실행될 수 있습니다. 이 경우 사용자는 쿼리 실행에 걸린 시간을 바탕으로 데이터에 country = 'US'인 행이 없다는 것을 더 쉽게 추론할 수 있습니다.

더 알아보기 (Learn more)