Query Accelerationサービスの使用

クエリアクセラレーションサービスは、ウェアハウス内のクエリワークロードの一部を高速化できます。ウェアハウスに対して有効にすると、通常のクエリよりも多くのリソースを使用するクエリである外れ値クエリの影響を減らすことで、ウェアハウス全体のパフォーマンスを向上させることができます。クエリアクセラレーションサービスは、クエリ処理作業の一部をサービスによって提供される共有コンピューティングリソースにオフロードして、これを実現します。

クエリアクセラレーションサービスのメリットを受ける可能性があるワークロードのタイプの例は次のとおりです。

  • アドホック分析。

  • クエリごとのデータ量が予測できないワークロード。

  • 大規模なスキャンと選択フィルターを使用したクエリ。

クエリアクセラレーションサービスは、より多くの作業を並行して実行し、スキャンとフィルタリングに費やされるウォールクロック時間を短縮することで、これらのタイプのワークロードをより効率的に処理できます。

注釈

クエリアクセラレーションサービスは、パフォーマンスの向上に関する予測可能性を保証するものではありません。クエリに対して公平にメリットをもたらすために、クエリアクセラレーションサービスはいつでも動的にリソースを再割り当てする可能性があります。パフォーマンスの向上は、異なる時間に実行される同じクエリで異なる場合があります。

このトピックの内容:

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 を指定して、クエリアクセラレーションサービスを有効にします。

注釈

クエリアクセラレーションサービスは、 検索最適化 が有効になっているテーブルのクエリを高速化しません。

サポートされている 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 ウェアハウスに関する詳細を表示します。クエリアクセラレーションサービスが有効になっていること、およびクエリアクセラレーションサービスの最大スケールファクターが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サービスの使用状況に対するモニター

ウェブインターフェイスを使用した、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_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サービスに対する請求情報の表示

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)));
最上部に戻る