DOCUMENTATION
/
시작하기
가이드
개발자
참조
릴리스
자습서
Snowflake Open Catalog
상태
  1. 개요
    • Snowflake Horizon Catalog
      • Snowflake에 연결하기
      • 가상 웨어하우스
      • 데이터베이스, 테이블 및 뷰
      • 데이터 타입
        • 데이터 로딩
        • 동적 테이블
        • 스트림 및 작업
        • 데이터 언로딩
        • 쿼리
            1. 조인
            2. 하위 쿼리
              • 계층 구조 데이터 쿼리하기
                • 일반 테이블 식(CTE)
                  • 반정형 데이터 쿼리하기
                    • 전체 텍스트 검색 사용하기
                      • 런타임에 SQL 구성하기
                        • 시계열 데이터 분석하기
                          • 윈도우 함수로 데이터 분석하기
                            • 일치 항목 인식
                              • 시퀀스
                                • 지속형 쿼리 결과
                                  • 고유 값 개수
                                  • 유사성 추정
                                    • 빈도 추정
                                      • 백분위수 값 추정하기
                                        • 쿼리 기록으로 쿼리 활동 모니터링하기
                                          • 쿼리 해시
                                            • 문 취소하기
                                          • 협업
                                          • Snowflake AI & ML
                                          • 경고 및 알림
                                          • 보안
                                          • 데이터 거버넌스
                                          • 개인정보 보호
                                          • 조직 및 계정
                                          • 비즈니스 연속성 및 데이터 복구
                                          • 성능 최적화
                                          • 비용 및 청구
                                          가이드쿼리쿼리 해시

                                          쿼리 해시를 사용하여 쿼리의 패턴과 추세 식별하기¶

                                          쿼리 기록에서 유사한 쿼리를 식별, 그룹화, 분석하려면 쿼리 텍스트의 해시를 사용하면 됩니다. 예를 들어 다음을 할 수 있습니다.

                                          • 쿼리 해시별로 쿼리를 그룹화하여 비용이 많이 드는 쿼리의 패턴을 식별합니다.

                                          • 반복 쿼리에 대한 성능 개선(예: 클러스터링 키 변경) 효과를 확인합니다.

                                          다음 뷰와 테이블 함수에서는 query_hash 및 query_parameterized_hash 열을 사용하여 쿼리 텍스트의 해시를 가져올 수 있습니다.

                                          • ACCOUNT_USAGE 뷰(1년 보존)

                                            • QUERY_HISTORY 뷰

                                            • QUERY_ACCELERATION_ELIGIBLE 뷰

                                            • TASK_HISTORY 뷰

                                          • INFORMATION_SCHEMA 테이블 함수(7일 보존)

                                            • QUERY_HISTORY 테이블 함수

                                            • TASK_HISTORY 테이블 함수

                                          이 해시를 사용하여 반복되는 쿼리를 분석할 수 있습니다.

                                          쿼리 해시(query_hash) 사용하기¶

                                          query_hash 열에는 SQL 문의 표준화된 텍스트를 기반으로 계산된 해시 값이 포함됩니다. 정확히 동일한 쿼리 텍스트가 있는 반복 쿼리는 동일한 query_hash 값을 갖습니다.

                                          쿼리 텍스트가 다음에서만 다른 경우 반복되는 쿼리에도 동일한 query_hash 가 있습니다.

                                          • 대/소문자를 구분하지 않는 식별자, 세션 변수 및 스테이지 이름

                                            여기에는 바인드 변수와 함께 IDENTIFIER()를 사용하여 지정된 식별자가 포함되지 않습니다. 다른 값을 가진 바인드 변수는 다른 쿼리 해시를 생성합니다.

                                          • 공백

                                          • 주석

                                          두 쿼리의 쿼리 텍스트 중 다른 부분이 다른 경우 해당 쿼리는 서로 다른 query_hash 값을 가집니다.

                                          예를 들어 다음 쿼리는 정확히 동일한 쿼리 텍스트를 가지므로 동일한 query_hash 값을 가집니다.

                                          SELECT * FROM table1 WHERE table1.name = 'TIM'
                                          
                                          Copy
                                          SELECT * FROM table1 WHERE table1.name = 'TIM'
                                          
                                          Copy

                                          query_hash 값을 사용하면 다른 방법으로는 명확하지 않을 수 있는 쿼리 성능의 패턴을 찾을 수 있습니다. 예를 들어 단일 실행 중에는 쿼리 비용이 과도할 정도로 들지 않을 수 있을지라도 쿼리가 자주 반복되면 실행 횟수에 따라 높은 비용 부담으로 이어질 수 있습니다. query_hash 값을 사용하여 먼저 최적화에 집중할 쿼리를 식별할 수 있습니다.

                                          예를 들어 다음 쿼리는 query_hash 값을 사용하여 가장 오래 실행되는 쿼리 100개의 쿼리 ID를 식별합니다.

                                          SELECT
                                              query_hash,
                                              COUNT(*),
                                              SUM(total_elapsed_time),
                                              ANY_VALUE(query_id)
                                            FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
                                            WHERE warehouse_name = 'MY_WAREHOUSE'
                                              AND DATE_TRUNC('day', start_time) >= CURRENT_DATE() - 7
                                            GROUP BY query_hash
                                            ORDER BY SUM(total_elapsed_time) DESC
                                            LIMIT 100;
                                          
                                          Copy

                                          매개 변수가 있는 쿼리의 해시(query_parameterized_hash) 사용하기¶

                                          query_parameterized_hash 는 매개 변수가 있는 쿼리를 기반으로 계산된 해시 값을 포함하는데, 이는 리터럴이 매개 변수로 지정된 후의 쿼리 버전을 의미합니다. 이러한 리터럴은 쿼리 조건자에 사용해야 하며 다음 비교 연산자 중 하나와 함께 사용해야 합니다.

                                          • = (같음)

                                          • != (같지 않음)

                                          • >= (크거나 같음)

                                          • <= (작거나 같음)

                                          반복되는 쿼리(매개 변수 값이 다른 쿼리 포함)는 동일한 query_parameterized_hash 값을 가집니다.

                                          쿼리 텍스트가 다음에서만 다른 경우 반복되는 쿼리에도 동일한 query_parameterized_hash 가 있습니다.

                                          • 대/소문자를 구분하지 않는 식별자, 세션 변수 및 스테이지 이름

                                            여기에는 바인드 변수와 함께 IDENTIFIER()를 사용하여 지정된 식별자가 포함되지 않습니다. 다른 값을 가진 바인드 변수는 다른 쿼리 해시를 생성합니다.

                                          • 공백

                                          • 주석

                                          동일한 query_hash 값을 가진 쿼리는 query_parameterized_hash 값도 동일하지만, 그 반대는 아닙니다.

                                          예를 들어, 다음 쿼리는 쿼리 간의 유일한 차이가 리터럴 값이므로 동일한 query_parameterized_hash 값을 가집니다.

                                          SELECT * FROM table1 WHERE table1.name = 'TIM'
                                          
                                          Copy
                                          SELECT * FROM table1 WHERE table1.name = 'AIHUA'
                                          
                                          Copy

                                          query_hash 값의 경우와 마찬가지로, query_parameterized_hash 값을 사용하면 다른 방법으로는 명확하지 않을 수 있는 쿼리 성능의 패턴을 찾을 수 있습니다.

                                          다음 문은 특정 query_parameterized_hash 값(cbd58379a88c37ed6cc0ecfebb053b03)이 있는 모든 쿼리에 대해 매일 평균 total_elapsed_time 을 계산합니다.

                                          SELECT
                                              DATE_TRUNC('day', start_time),
                                              SUM(total_elapsed_time),
                                              ANY_VALUE(query_id)
                                            FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
                                            WHERE query_parameterized_hash = 'cbd58379a88c37ed6cc0ecfebb053b03'
                                              AND DATE_TRUNC('day', start_time) >= CURRENT_DATE() - 30
                                            GROUP BY DATE_TRUNC('day', start_time);
                                          
                                          Copy

                                          해시 생성에 사용된 버전 확인하기¶

                                          시간이 지남에 따라, Snowflake에서 쿼리 해시 생성에 사용하는 논리가 변경될 수 있습니다. 이 논리를 변경하면 동일한 쿼리에 대해 서로 다른 해시가 생성될 수 있습니다. 예를 들어 주어진 쿼리에 대해 논리의 버전 1에서 생성된 해시는 논리의 버전 2에서 생성된 해시와 다를 수 있습니다.

                                          query_hash 및 query_parameterized_hash 열을 포함하는 뷰 및 테이블 함수 출력에는 해시 생성에 사용되는 논리의 버전을 지정하는 다음 열도 포함됩니다.

                                          • query_hash_version

                                          • query_parameterized_hash_version

                                          이들 열의 버전 번호는 NUMBER입니다(예: 논리의 첫 번째 버전은 1, 논리의 두 번째 버전은 2 등).

                                          이러한 열에 다양한 기간 동안 다양한 버전 번호가 포함된 경우 이러한 버전 열을 사용하여 동일한 쿼리에 대해 다른 해시를 식별할 수 있습니다. 예:

                                          ...
                                          WHERE (query_hash = 'hash_from_v1' AND query_hash_version = 1)
                                            OR (query_hash = 'hash_from_v2' AND query_hash_version = 2)
                                          
                                          Copy

                                          이 페이지가 도움이 되었습니까?

                                          Snowflake 방문하기
                                          대화에 참여하기
                                          Snowflake로 개발하기
                                          피드백 공유하기
                                          블로그에서 최신 게시물 읽기
                                          자체 인증 받기
                                          개인정보 보호정책사이트 이용약관© 2025 Snowflake, Inc. All Rights Reserved.
                                          1. 쿼리 해시(query_hash) 사용하기
                                          2. 매개 변수가 있는 쿼리의 해시(query_parameterized_hash) 사용하기
                                          3. 해시 생성에 사용된 버전 확인하기
                                          언어: 한국어
                                          • English
                                          • Français
                                          • Deutsch
                                          • 日本語
                                          • 한국어
                                          • Português