Query Acceleration Service 사용하기

쿼리 가속 서비스는 웨어하우스에서 쿼리 워크로드의 일부를 가속화할 수 있습니다. 이 서비스를 웨어하우스용으로 활성화하면 일반적인 쿼리보다 더 많은 리소스를 사용하는 쿼리인 이상값 쿼리의 영향을 줄여 전반적인 웨어하우스 성능을 개선할 수 있습니다. 쿼리 가속 서비스는 쿼리 처리 작업 중 일부를 서비스에서 제공하는 공유 컴퓨팅 리소스로 오프로딩하여 이러한 효과를 거둡니다.

쿼리 가속 서비스의 이점을 활용할 수 있는 워크로드 유형의 예는 다음과 같습니다.

  • 임시 분석.

  • 쿼리당 데이터 볼륨을 예측할 수 없는 워크로드.

  • 대규모 스캔 및 선택적 필터를 사용한 쿼리.

쿼리 가속 서비스는 더 많은 작업을 병렬로 수행하고 스캔 및 필터링에 소요되는 벽시계 시간을 줄여 이러한 유형의 워크로드를 보다 효율적으로 처리할 수 있습니다.

참고

쿼리 가속 서비스는 성능 향상과 관련된 예측 가능성을 보장하지 않습니다. 쿼리의 이점을 공평하게 활용하기 위해, 쿼리 가속 서비스는 언제든지 리소스를 동적으로 재할당할 수 있습니다. 성능 향상은 다양한 시간에 실행된 동일한 쿼리에 대해 다를 수 있습니다.

이 항목의 내용:

Query Acceleration의 이점을 얻을 수 있는 쿼리 및 웨어하우스 식별하기

쿼리 가속 서비스의 이점을 얻을 수 있는 쿼리를 식별하기 위해, SYSTEM$ESTIMATE_QUERY_ACCELERATION 함수를 사용하거나 QUERY_ACCELERATION_ELIGIBLE 뷰 을 쿼리할 수 있습니다. QUERY_ACCELERATION_ELIGIBLE 뷰는 쿼리 가속 서비스의 이점을 얻을 수 있는 웨어하우스도 식별합니다.

SYSTEM$ESTIMATE_QUERY_ACCELERATION 함수로 쿼리 식별하기

SYSTEM$ESTIMATE_QUERY_ACCELERATION 함수를 사용하면 이전에 실행된 쿼리가 쿼리 가속 서비스의 이점을 얻을 수 있는지 확인하는 데 도움이 될 수 있습니다. 쿼리가 쿼리 가속에 적합한 경우 이 함수는 다양한 쿼리 가속 배율 에 대한 예상 쿼리 실행 시간을 반환합니다.

쿼리 가속이 특정 쿼리에 이점이 되는 부분이 있을지 확인하려면 다음 문을 실행하십시오.

select parse_json(system$estimate_query_acceleration('8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f'));

이 예에서는 쿼리가 쿼리 가속 서비스에 적합하며 서비스를 사용하는 예상 쿼리 시간을 포함합니다.

{
  "estimatedQueryTimes": {
    "1": 171,
    "10": 115,
    "2": 152,
    "4": 133,
    "8": 120
  },
  "originalQueryTime": 300.291,
  "queryUUID": "8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f",
  "status": "eligible",
  "upperLimitScaleFactor": 10
}

다음 예는 쿼리 가속 서비스에 적합하지 않은 쿼리의 결과를 보여줍니다.

select parse_json(system$estimate_query_acceleration('cf23522b-3b91-cf14-9fe0-988a292a4bfa'));

위의 문은 다음과 같은 출력을 내놓습니다.

{
  "estimatedQueryTimes": {},
  "originalQueryTime": 20.291,
  "queryUUID": "cf23522b-3b91-cf14-9fe0-988a292a4bfa",
  "status": "ineligible",
  "upperLimitScaleFactor": 0
}

QUERY_ACCELERATION_ELIGIBLE 뷰로 쿼리 및 웨어하우스 식별하기

QUERY_ACCELERATION_ELIGIBLE 뷰 을 쿼리하여 쿼리 가속 서비스에서 가장 큰 이점을 얻을 수 있는 쿼리와 웨어하우스를 식별합니다. 각 쿼리에 대해 뷰에는 쿼리 가속 서비스에 적합한 쿼리 실행 시간이 포함됩니다.

참고

이러한 예에서는 SNOWFLAKE 데이터베이스와 ACCOUNT_USAGE 스키마가 현재 세션에 사용 중인 것으로 가정합니다. 또한, 이들 예에서는 ACCOUNTADMIN 역할(또는 데이터베이스에서 IMPORTED PRIVILEGES 가 부여된 역할)이 사용 중이라고 간주합니다. 이들이 사용 중이지 않는 경우에는 다음 명령을 실행한 후에 예제의 쿼리를 실행하십시오.

USE ROLE ACCOUNTADMIN;

USE SCHEMA snowflake.account_usage;

가속에 적합한 쿼리 실행 시간으로 서비스에서 가장 큰 이점을 얻을 쿼리를 식별합니다.

SELECT query_id, eligible_query_acceleration_time
FROM QUERY_ACCELERATION_ELIGIBLE
ORDER BY eligible_query_acceleration_time DESC;

특정 웨어하우스 mywh 의 서비스로부터 가장 큰 이점을 얻을 쿼리를 식별합니다.

SELECT query_id, eligible_query_acceleration_time
FROM QUERY_ACCELERATION_ELIGIBLE
WHERE warehouse_name = 'mywh'
ORDER BY eligible_query_acceleration_time DESC;

쿼리 가속 서비스에 적합한 쿼리가 가장 많은 특정 기간에 있는 웨어하우스를 식별합니다.

SELECT warehouse_name, COUNT(query_id) AS num_eligible_queries
FROM query_acceleration_eligible
WHERE start_time > 'Tue, 18 January 2022 12:00:00'::timestamp
AND end_time < 'Tue, 19 January 2022 00:00:00'::timestamp
GROUP BY warehouse_name
ORDER BY num_eligible_queries DESC;

쿼리 가속 서비스에서 가장 큰 이점을 얻을 웨어하우스를 식별합니다. 각 웨어하우스에 대해, 가속에 적합한 총 쿼리 실행 시간을 계산합니다.

SELECT warehouse_name, SUM(eligible_query_acceleration_time) AS total_eligible_time
FROM QUERY_ACCELERATION_ELIGIBLE
GROUP BY warehouse_name
ORDER BY total_eligible_time DESC;

주어진 웨어하우스에 대한 쿼리 가속 서비스의 상한 배율 을 식별합니다.

SELECT MAX(upper_limit_scale_factor)
FROM QUERY_ACCELERATION_ELIGIBLE
WHERE warehouse_name = 'mywh';

Query Acceleration 활성화하기

웨어하우스(CREATE WAREHOUSE 사용) 또는 그 이상(ALTER WAREHOUSE 사용)을 만들 때 ENABLE_QUERY_ACCELERATION = TRUE를 지정하여 쿼리 가속 서비스를 활성화합니다.

참고

Query Acceleration Service는 검색 최적화 가 활성화된 테이블에 대한 쿼리를 가속하지 않습니다.

지원되는SQL 명령

쿼리 가속 서비스는 다음 SQL 명령을 지원합니다.

  • SELECT

  • INSERT(문에 SELECT 문이 포함된 경우)

  • CREATE TABLE AS SELECT (CTAS)

지원되는 SQL 명령이 포함된 쿼리 또는 쿼리의 일부(예: 하위 쿼리 또는 절)는 쿼리 가속 서비스가 가속에 적합한 경우 쿼리 가속 서비스에 의해 가속될 수 있습니다.

다음 예에서는 최대 배율 2로 쿼리 가속 서비스를 활성화한 my_wh 라는 웨어하우스를 만듭니다.

create warehouse my_wh with
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 2;

다음 예에서는 최대 배율이 8인 my_wh 라는 웨어하우스에 대한 쿼리 가속 서비스를 활성화합니다.

alter warehouse my_wh set
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 8;

SHOW WAREHOUSES 명령을 실행하여 my_wh 웨어하우스에 대한 세부 정보를 표시합니다. Query Acceleration Service가 활성화되어 있고 Query Acceleration Service의 최대 배율이 8인지 확인합니다.

show warehouses like 'my_wh';

+---------+-----------+----------+---------+-------------------+-------------------+------------------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+-----------+----------------+
| name    | state     | type     | size    | min_cluster_count | max_cluster_count | started_clusters | running | queued | is_default | is_current | auto_suspend | auto_resume | available | provisioning | quiescing | other | created_on                    | resumed_on                    | updated_on                    | owner        | comment | enable_query_acceleration | query_acceleration_max_scale_factor | resource_monitor | actives | pendings | failed | suspended | uuid      | scaling_policy |
|---------+-----------+----------+---------+-------------------+-------------------+------------------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+-----------+----------------|
| MY_WH   | STARTED   | STANDARD | X-Small |                 1 |                 1 |                0 |       0 |      0 | N          | N          |          600 | true        |           |              |           |       | 2022-02-17 22:41:03.119 +0000 | 2022-05-13 14:10:57.994 +0000 | 2022-05-13 14:10:57.994 +0000 | ACCOUNTADMIN |         | true                      |                                   8 | null             |       0 |        0 |      0 |         1 | 158403873 | STANDARD       |
+---------+-----------+----------+---------+-------------------+-------------------+------------------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+-----------+----------------+

쿼리 가속 서비스는 웨어하우스의 크레딧 사용률을 높일 수 있습니다. 최대 배율을 지정해 사용률을 제한할 수 있습니다. QUERY_ACCELERATION_MAX_SCALE_FACTOR 속성에 대한 자세한 내용은 CREATE WAREHOUSE 또는 ALTER WAREHOUSE 섹션을 참조하십시오.

QUERY_ACCELERATION_ELIGIBLE 뷰와 SYSTEM$ESTIMATE_QUERY_ACCELERATION 함수는 웨어하우스에 알맞은 배율을 결정하는 데 유용할 수 있습니다. 자세한 내용은 이 항목의 Query Acceleration의 이점을 얻을 수 있는 쿼리 및 웨어하우스 식별하기 섹션을 참조하십시오.

Query Acceleration Service 사용량 모니터링하기

웹 인터페이스를 사용하여 Query Acceleration 사용량 모니터링하기

쿼리 가속 서비스를 활성화하면 쿼리 프로필 에서 프로필 개요 패널을 보고 쿼리 가속 결과의 효과를 확인할 수 있습니다.

다음 스크린샷에서 전체 쿼리에 대해 표시되는 통계의 예를 볼 수 있습니다. 한 쿼리에서 여러 작업을 가속화한 경우 이 뷰에 결과가 집계되므로 쿼리 가속 서비스에서 수행한 총 작업량을 볼 수 있습니다.

../_images/query-acceleration-profile-overview.png

Profile Overview 패널의 Query Acceleration 섹션에는 다음 통계가 포함됩니다.

  • 서비스에서 스캔한 파티션 수 — 쿼리 가속 서비스로 스캔하기 위해 오프로드된 파일 개수.

  • 가속을 위해 선택한 스캔 수 — 가속화되는 테이블 스캔 개수.

연산자 세부 정보(자세한 내용은 프로필 개요/ 연산자 세부 정보 참조)에서 연산자를 클릭하여 자세한 정보를 확인하십시오. 다음 스크린샷에서 TableScan 작업에 대해 표시되는 통계의 예를 볼 수 있습니다.

../_images/query-acceleration-table-scan.png

TableScan 세부 정보 패널의 Query Acceleration 섹션에는 다음 통계가 포함됩니다.

  • 서비스에서 스캔한 파티션 수 — 쿼리 가속 서비스로 스캔하기 위해 오프로드된 파일 개수.

Account Usage QUERY_HISTORY 뷰를 사용하여 Query Acceleration 사용량 모니터링하기

쿼리 가속이 쿼리에 미치는 영향을 확인하려면 QUERY_HISTORY 뷰 에서 다음 열을 사용할 수 있습니다.

  • QUERY_ACCELERATION_BYTES_SCANNED

  • QUERY_ACCELERATION_PARTITIONS_SCANNED

  • QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR

이러한 열을 사용하여 쿼리 가속 서비스의 이점을 활용한 쿼리를 식별할 수 있습니다. 각 쿼리에 대해 쿼리 가속 서비스에서 스캔한 파티션과 바이트의 총수를 확인할 수도 있습니다.

이러한 각 열에 대한 설명은 QUERY_HISTORY 뷰 섹션을 참조하십시오.

예를 들어, 지난 24시간 동안 쿼리 가속 서비스에서 스캔한 바이트가 가장 많은 쿼리를 찾는 방법은 다음과 같습니다.

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE QUERY_ACCELERATION_PARTITIONS_SCANNED > 0
AND start_time >= DATEADD(hour, -24, CURRENT_TIMESTAMP())
ORDER BY QUERY_ACCELERATION_BYTES_SCANNED DESC;

지난 24시간 동안 쿼리 가속 서비스에서 스캔한 파티션 수가 가장 많은 쿼리를 찾는 방법은 다음과 같습니다.

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE QUERY_ACCELERATION_PARTITIONS_SCANNED > 0
AND start_time >= DATEADD(hour, -24, CURRENT_TIMESTAMP())
ORDER BY QUERY_ACCELERATION_PARTITIONS_SCANNED DESC;

Query Acceleration Service에 대한 청구 정보 보기

Query Acceleration은 서버리스 컴퓨팅 리소스 를 사용하여 적격 쿼리의 일부를 실행할 때 크레딧을 사용합니다.

Query Acceleration은 사용한 컴퓨팅 리소스에 대해 초 단위로 비용을 결제한다는 점에서 Snowflake의 다른 서버리스 기능처럼 청구됩니다.

특징

컴퓨팅 시간당 Snowflake 크레딧

Snowflake 관리 컴퓨팅

클라우드 서비스

Query Acceleration

1

1

클래식 웹 인터페이스에서 청구 정보 보기

계정에 대해 Query Acceleration을 활성화한 경우 웹 인터페이스의 청구 페이지에는 계정의 모든 웨어하우스에 걸쳐 서비스에서 사용하는 모든 크레딧을 표시하는 QUERY_ACCELERATION이라는 웨어하우스가 포함됩니다.

아래 스크린샷에서 QUERY_ACCELERATION 웨어하우스에 대해 표시된 청구 정보의 예를 볼 수 있습니다.

../_images/query-acceleration-billing-ui.png

Account Usage QUERY_ACCELERATION_HISTORY 뷰를 사용하여 청구 보기

Account Usage QUERY_ACCELERATION_HISTORY 뷰 에서 청구 데이터를 볼 수 있습니다.

다음 예제에서는 쿼리 가속 서비스에 대해 계정의 각 웨어하우스에서 사용한 크레딧(당월 합계)의 총수를 반환합니다.

select warehouse_name,
       sum(credits_used) as total_credits_used
from snowflake.account_usage.query_acceleration_history
where start_time >= date_trunc(month, current_date)
group by 1
order by 2 desc;

QUERY_ACCELERATION_HISTORY 함수를 사용하여 청구 보기

Information Schema QUERY_ACCELERATION_HISTORY 함수를 사용하여 청구 데이터를 볼 수도 있습니다.

다음 예제에서는 QUERY_ACCELERATION_HISTORY 함수를 사용하여 지난 12시간 동안 이 서비스로 가속화한 쿼리에 대한 정보를 반환합니다.

select * from
table(information_schema.query_acceleration_history(
  date_range_start=>dateadd(H, -12, current_timestamp)));
맨 위로 이동