Snowsight를 사용한 검색 최적화 모니터링

Snowsight를 사용한 검색 최적화 모니터링

검색 최적화 서비스를 활성화한 후에는 Snowsight를 사용해 쿼리가 어떻게 사용하는지에 대한 통계를 모니터링할 수 있습니다. 또한 Snowsight를 사용해 쿼리가 검색 최적화 서비스를 사용하지 않는 이유를 판단할 수도 있습니다.

출처: Snowflake 문서

본문

쿼리에 대한 검색 최적화 사용 모니터링

쿼리가 검색 최적화 서비스를 사용할 때 쿼리 프로필 에는 다음이 포함됩니다.

  • Search Optimization Access 노드: 쿼리 플랜에 전용 Search Optimization Access 노드가 있습니다. 이 노드를 선택해 테이블 스캔 정보와 검색 최적화에 특정한 정보에 접근하세요.
  • Attributes 창: 이 노드의 이 창에는 다음이 포함됩니다.

전체 테이블 이름 - 검색 최적화를 사용한 쿼리에 대해 스캔된 테이블을 식별합니다.

  • 검색 최적화 사용 정보 - 이 섹션은 쿼리 실행 중 검색 최적화가 참조한 표현식 ID를 나열합니다. 각 표현식 ID는 테이블에 정의된 검색 방법과 열 대상에 대응합니다. 다음 쿼리를 실행해 표현식 ID와 그에 대응하는 방법 및 대상을 표시하세요.
DESCRIBE SEARCH OPTIMIZATION ON <table_name>;

이 명령에 대한 자세한 내용은 DESCRIBE SEARCH OPTIMIZATION 을 참고하세요.

  • Statistics 창: 이 노드의 이 창에는 다음 지표가 포함됩니다.

  • Bytes scanned - 테이블 스캔 작업 실행 중 읽은 총 데이터 양.

  • Partitions scanned - 실제로 스캔된 마이크로 파티션 수.

  • Partitions total - 테이블의 마이크로 파티션 총 수.

  • Partitions pruned by search optimization - 검색 최적화가 해당 테이블 스캔에서 효과적으로 제거한 마이크로 파티션 수.

다음 이미지는 Statistics 창의 지표 예시를 보여줍니다.

검색 최적화가 사용되지 않은 이유 판단

테이블에 검색 최적화가 구성되어 있어도 항상 사용되는 것은 아닙니다. 쿼리에 대해 검색 최적화가 사용되지 않았다면 Attributes 창의 Table Scan 노드의 Search Optimization Usage Info 섹션을 살펴보세요. 이 섹션은 다음 설명 중 하나를 보여줍니다.

  • 조건부 불일치가 있을 때 다음 메시지가 표시됩니다.
Search optimization service was not used because no
match was found between used predicates and the
search access paths added for the table.

이 메시지는 이 테이블의 쿼리에 사용된 조건부가 테이블에 정의된 검색 방법과 호환되지 않음을 나타냅니다. 다음 명령을 실행해 테이블의 최적화 구성을 검토할 수 있습니다.

DESCRIBE SEARCH OPTIMIZATION ON <table_name>;

검색 최적화가 지원하는 조건부와 데이터 타입에 대한 정보는 검색 최적화로 혜택을 받는 쿼리 식별 을 참고하세요.

  • 비용 기반으로 검색 최적화를 사용하지 않기로 결정했을 때 다음 메시지가 표시됩니다.
The query optimizer estimated that the search optimization
service would not be beneficial for this table scan.

이 메시지는 쿼리에 사용된 조건부가 테이블에 정의된 검색 방법과 호환되지만, 쿼리 옵티마이저가 검색 최적화가 쿼리 성능을 향상시키지 않을 것이라고 판단했음을 나타냅니다. 다른 조건부나 소스 테이블의 다른 데이터를 가진 이후 쿼리에서 검색 최적화를 사용할 수 있습니다.

  • 조건부 한도를 초과했을 때 다음 메시지가 표시됩니다.
Search optimization service was not used because the
predicate limit was exceeded.

이 메시지는 조건부에 너무 많은 고유 조건부가 포함되어 있음을 나타냅니다. 검색 최적화 조건부의 정확한 수는 조건부의 유형에 따라 달라지며 쿼리의 조건부 수와 정확히 일치하지 않을 수 있습니다. 와일드카드 구문을 사용하는 부분 문자열 쿼리 와 전체 텍스트 검색 쿼리 는 조건부 한도에 도달할 가능성이 더 높습니다.

다음 이미지는 조건부 불일치 메시지의 예시를 보여줍니다.

더 알아보기 (Learn more)