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 사용량 모니터링하기¶
쿼리 가속 서비스를 활성화하면 쿼리 프로필 에서 프로필 개요 패널을 보고 쿼리 가속 결과의 효과를 확인할 수 있습니다.
다음 스크린샷에서 전체 쿼리에 대해 표시되는 통계의 예를 볼 수 있습니다. 한 쿼리에서 여러 작업을 가속화한 경우 이 뷰에 결과가 집계되므로 쿼리 가속 서비스에서 수행한 총 작업량을 볼 수 있습니다.
Profile Overview 패널의 Query Acceleration 섹션에는 다음 통계가 포함됩니다.
서비스에서 스캔한 파티션 수 — 쿼리 가속 서비스로 스캔하기 위해 오프로드된 파일 개수.
가속을 위해 선택한 스캔 수 — 가속화되는 테이블 스캔 개수.
연산자 세부 정보(자세한 내용은 프로필 개요/ 연산자 세부 정보 참조)에서 연산자를 클릭하여 자세한 정보를 확인하십시오. 다음 스크린샷에서 TableScan 작업에 대해 표시되는 통계의 예를 볼 수 있습니다.
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 웨어하우스에 대해 표시된 청구 정보의 예를 볼 수 있습니다.
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)));