Query Acceleration Serviceの使用

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

Query Acceleration Serviceのメリットを受ける可能性があるワークロードのタイプの例は次のとおりです。

  • アドホック分析。

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

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

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

注釈

Query Acceleration Serviceは、サーバーの可用性によって異なります。したがって、パフォーマンスの向上は時間の経過とともに変動する可能性があります。

このトピックの内容:

Query Accelerationのメリットを受ける可能性のあるクエリとウェアハウスの識別

Query Acceleration Serviceのメリットを受ける可能性のあるクエリを識別するには、 SYSTEM$ESTIMATE_QUERY_ACCELERATION 関数を使用するか、 QUERY_ACCELERATION_ELIGIBLE ビュー をクエリします。QUERY_ACCELERATION_ELIGIBLE ビューは、Query Acceleration Serviceのメリットを受ける可能性のあるウェアハウスも識別します。

不適格なクエリ

一部のクエリは、クエリアクセラレーションの対象外です。クエリを高速化できない一般的な理由は次のとおりです。

  • 十分なパーティションがない。スキャンするために十分なパーティションがないと、クエリアクセラレーションの利点はクエリアクセラレーションサービスのためにリソースを取得する際の遅延によって相殺されます。

  • クエリはフィルターまたは集計をしません。

  • フィルターの選択性が十分ではない。または、 GROUP BY 式のカーディナリティが高くなっている。

  • クエリには LIMIT 句が含まれますが、ORDER BY 句はありません。

  • このクエリには、非決定的な結果を返す関数が含まれています(例えば、 SEQRANDOM など)。

SYSTEM$ESTIMATE_QUERY_ACCELERATION 関数を使用したクエリの識別

SYSTEM$ESTIMATE_QUERY_ACCELERATION 関数は、以前に実行されたクエリが、Query Acceleration Serviceのメリットを受ける可能性があるかどうかを判断するのに役立ちます。クエリがクエリアクセラレーションの対象である場合、関数はさまざまなクエリのアクセラレーション スケールファクター の推定クエリ実行時間を返します。

次のステートメントを実行して、クエリアクセラレーションが特定のクエリに役立つかどうかを判断します。

SELECT PARSE_JSON(SYSTEM$ESTIMATE_QUERY_ACCELERATION('8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f'));
Copy

この例では、クエリはQuery Acceleration Serviceの対象であり、サービスを使用した推定クエリ時間が含まれています。

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

次の例は、Query Acceleration Serviceの対象とならないクエリの結果を示しています。

SELECT PARSE_JSON(SYSTEM$ESTIMATE_QUERY_ACCELERATION('cf23522b-3b91-cf14-9fe0-988a292a4bfa'));
Copy

上記のステートメントは、次の出力を生成します。

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

QUERY_ACCELERATION_ELIGIBLE ビューを使用したクエリとウェアハウスの識別

QUERY_ACCELERATION_ELIGIBLE ビュー をクエリして、Query Acceleration Serviceから最もメリットを受ける可能性のあるクエリとウェアハウスを識別します。ビューには、クエリごとに、Query Acceleration Serviceの対象となるクエリ実行時間が含まれます。

注釈

これらの例では、 ACCOUNTADMIN ロール(または共有 SNOWFLAKE データベースで IMPORTED PRIVILEGES が付与されたロール)が使用されていることを想定しています。使用されていない場合は、例にあるクエリを実行する前に次のコマンドを実行します。

USE ROLE ACCOUNTADMIN;
Copy

アクセラレーションの対象となるクエリ実行時間の量によって、サービスから最もメリットを受ける可能性のあるクエリを識別します。

SELECT query_id, eligible_query_acceleration_time
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  ORDER BY eligible_query_acceleration_time DESC;
Copy

特定のウェアハウス mywh でサービスから最もメリットを受ける可能性のあるクエリを識別します。

SELECT query_id, eligible_query_acceleration_time
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  WHERE warehouse_name = 'mywh'
  ORDER BY eligible_query_acceleration_time DESC;
Copy

Query Acceleration Serviceの特定の期間中、対象となるクエリが最も多いウェアハウスを識別します。

SELECT warehouse_name, COUNT(query_id) AS num_eligible_queries
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  WHERE start_time > 'Mon, 29 May 2023 00:00:00'::timestamp
  AND end_time < 'Tue, 30 May 2023 00:00:00'::timestamp
  GROUP BY warehouse_name
  ORDER BY num_eligible_queries DESC;
Copy

Query Acceleration Serviceの対象となる時間が最も長いウェアハウスを識別します。

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

特定のウェアハウスに対する、Query Acceleration Serviceの上限 スケールファクター を識別します。

SELECT MAX(upper_limit_scale_factor)
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  WHERE warehouse_name = 'mywh';
Copy

特定のウェアハウスに対するQuery Acceleration Serviceのスケールファクターの分布を識別します。

SELECT upper_limit_scale_factor, COUNT(upper_limit_scale_factor)
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  WHERE warehouse_name = '<warehouse_name>'
  GROUP BY 1 ORDER BY 1;
Copy

Query Accelerationの有効化

ウェアハウスの作成時(CREATE WAREHOUSE を使用)またはそれ以降(ALTER WAREHOUSE を使用)に ENABLE_QUERY_ACCELERATION = TRUE を指定して、Query Acceleration Serviceを有効にします。

サポートされている SQL コマンド

Query Acceleration Serviceは、次の SQL コマンドをサポートしています。

  • SELECT

  • INSERT (ステートメントに SELECT ステートメントが含まれる場合)

  • CREATE TABLE AS SELECT (CTAS)

サポートされている SQL コマンドを使用したクエリ、またはクエリの一部(つまり、サブクエリまたは句)は、高速化の対象である場合、Query Acceleration Serviceによって高速化される可能性があります。

次の例では、 my_wh という名前のウェアハウスのQuery Acceleration Serviceを有効にします。

CREATE WAREHOUSE my_wh WITH
  ENABLE_QUERY_ACCELERATION = true;
Copy

SHOW WAREHOUSES コマンドを実行して、 my_wh ウェアハウスに関する詳細を表示します。

SHOW WAREHOUSES LIKE 'my_wh';

+---------+---------+----------+---------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+------------+
| name    | state   | type     | size    | 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       |
|---------+---------+----------+---------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+------------|
| MY_WH   | SUSPENDED | STANDARD | Medium |       0 |      0 | N          | N          |          600 | true        |           |              |           |       | 2023-01-20 14:31:49.283 -0800 | 2023-01-20 14:31:49.388 -0800 | 2023-01-20 16:34:28.583 -0800 | ACCOUNTADMIN |         | true                      |                                   8 | null             |       0 |        0 |      0 |         4 | 1132659053 |
+---------+---------+----------+---------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+------------+
Copy

Query Acceleration Serviceは、ウェアハウスのクレジット消費率を高める可能性があります。最大スケールファクターは、消費率を制限するのに役立ちます。 QUERY_ACCELERATION_MAX_SCALE_FACTOR プロパティの詳細については、 CREATE WAREHOUSE または ALTER WAREHOUSE をご参照ください。

QUERY_ACCELERATION_ELIGIBLE ビューと SYSTEM$ESTIMATE_QUERY_ACCELERATION 関数は、ウェアハウスの適切なスケールファクターを決定するのに役立つ場合があります。詳細については、 Query Accelerationのメリットを受ける可能性のあるクエリとウェアハウスの識別 (このトピック内)をご参照ください。

スケールファクターの調整

スケールファクターは、ウェアハウスがクエリアクセラレーションのためにリースするコンピューティングリソースの量に上限を設定できる コスト管理 メカニズムです。この値は、ウェアハウスサイズとコストに基づく乗数として使用されます。

たとえば、Mサイズのウェアハウスのスケールファクターを5に設定するとします。これは、

  • ウェアハウスは、Mサイズのウェアハウスの5倍までコンピューティングリソースをリースできます。

  • Mサイズのウェアハウスのコストは 1時間あたり4クレジット であるため、これらのリソースをリースすると、1時間あたり最大20クレジット(ウェアハウスあたり4クレジットx5倍のサイズ)のコストがかかる可能性があります。

Query Acceleration Serviceを同時に使用するクエリの数に関係なく、コストは同じです。Query Acceleration Serviceは、サービスが使用されている場合にのみ、秒単位で課金されます。これらのクレジットは、ウェアハウスの使用とは別に請求されます。

すべてのクエリが、スケールファクターによって利用可能になるリソースのフルセットを必要とするわけではありません。サービスのためにリクエストされるリソースの量は、アクセラレーションの対象となるクエリの量と、それに応答するために処理されるデータの量によって異なります。スケールファクターの値またはリクエストされたリソースの量に関係なく、クエリアクセラレーションに使用できるコンピューティングリソースの量は、サービスで使用可能なリソースと、他の同時リクエストの数によって制限されます。Query Acceleration Serviceは、必要な数のリソースをクエリの実行時に使用可能な量のみ使用します。

スケールファクターが明示的に設定されていない場合、デフォルト値は 8 です。スケールファクターを 0 に設定すると、上限がなくなり、クエリが必要な数のリソースをリースし、クエリの処理に使用できるようになります。

次の例では、 my_wh という名前のウェアハウスを変更して、最大スケールファクターを0にしたQuery Acceleration Serviceを有効にします。

ALTER WAREHOUSE my_wh SET
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 0;
Copy

Query Acceleration Serviceの使用状況に対するモニター

ウェブインターフェイスを使用した、Query Accelerationの使用状況に対するモニター

Query Acceleration Serviceを有効にすると、 クエリプロファイルプロファイルの概要 パネルを表示して、クエリアクセラレーションの結果の影響を確認できます。

次のスクリーンショットは、クエリ全体に対して表示される統計の例を示しています。クエリ内の複数の操作が高速化された場合、結果はこのビューに集約されるため、Query Acceleration Serviceによって実行された作業の合計量を確認できます。

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

Profile Overview パネルの Query Acceleration セクションには、次の統計が含まれています。

  • サービスによってスキャンされたパーティション --- スキャンするためにQuery Acceleration Serviceにオフロードされたファイルの数。

  • アクセラレーション用に選択されたスキャン --- 高速化されているテーブルスキャンの数。

演算子の詳細(詳細については、 プロファイルの概要/演算子の詳細 を参照)で、演算子をクリックして詳細情報を表示します。次のスクリーンショットは、 TableScan 操作で表示される統計の例を示しています。

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

TableScan 詳細パネルの Query Acceleration セクションには、次の統計が含まれています。

  • サービスによってスキャンされたパーティション --- スキャンするためにQuery Acceleration Serviceにオフロードされたファイルの数。

Account Usage QUERY_HISTORY ビューを使用したクエリアクセラレーション使用状況のモニター

クエリに対するクエリアクセラレーションの影響を確認するには、 QUERY_HISTORY ビュー で次の列を使用できます。

  • QUERY_ACCELERATION_BYTES_SCANNED

  • QUERY_ACCELERATION_PARTITIONS_SCANNED

  • QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR

これらの列を使用して、Query Acceleration Serviceのメリットを受けたクエリを識別できます。クエリごとに、Query Acceleration Serviceによってスキャンされたパーティションとバイトの総数を確認することもできます。

これらの各列の説明については、 QUERY_HISTORY ビュー をご参照ください。

注釈

特定のクエリについて、 QUERY_ACCELERATION_BYTES_SCANNED 列と BYTES_SCANNED 列の合計は、Query Acceleration Serviceを使用しない場合よりもサービスを使用した場合の方が大きくなる可能性があります。列 QUERY_ACCELERATION_PARTITIONS_SCANNED と PARTITIONS_SCANNED の合計にも同じことが当てはまります。

バイト数とパーティション数の増加は、クエリアクセラレーションを促進するためにサービスによって生成される中間結果によるものです。

たとえば、過去24時間にQuery Acceleration Serviceによってスキャンされたバイト数が最も多いクエリを検索するには、次を実行します。

SELECT query_id,
       query_text,
       warehouse_name,
       start_time,
       end_time,
       query_acceleration_bytes_scanned,
       query_acceleration_partitions_scanned,
       query_acceleration_upper_limit_scale_factor
  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;
Copy

過去24時間にQuery Acceleration Serviceによってスキャンされたパーティションの数が最も多いクエリを検索するには、次を実行します。

SELECT query_id,
       query_text,
       warehouse_name,
       start_time,
       end_time,
       query_acceleration_bytes_scanned,
       query_acceleration_partitions_scanned,
       query_acceleration_upper_limit_scale_factor
  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;
Copy

Query Acceleration Serviceのコスト

Query Accelerationは、 サーバーレスコンピューティングリソース を使用して対象となるクエリの一部を実行するため、クレジットを消費します。

Query Accelerationは、使用されたコンピューティングリソースに対して秒単位で支払うという点で、Snowflakeの他のサーバーレス機能と同様に課金されます。Query Acceleration Serviceにより消費されたコンピューティング時間あたりのクレジット量を知る方法については、 Snowflakeサービス利用テーブル の「サーバーレス機能クレジットテーブル」をご参照ください。

従来のコンソール内における請求情報の表示

アカウントでQuery Acceleration Serviceを有効にしている場合、 Classic Console の請求ページには QUERY_ACCELERATION というウェアハウスが含まれ、アカウント内のすべてのウェアハウスでサービスによって使用されるすべてのクレジットが表示されます。

以下のスクリーンショットは、 QUERY_ACCELERATION ウェアハウスに表示される請求情報の例を示しています。

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

Account Usage QUERY_ACCELERATION_HISTORY ビューを使用した請求データの表示

Account Usage QUERY_ACCELERATION_HISTORY ビュー で請求データを表示できます。

このクエリは、アカウント内の各ウェアハウスが、Query Acceleration Serviceに使用するクレジットの合計数を返します(月度累計)。

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;
Copy

組織の使用状況 QUERY_ACCELERATION_HISTORY ビューを使用した請求の表示

組織の使用状況 QUERY_ACCELERATION_HISTORY ビュー で、組織内にあるすべてのQuery Acceleration Serviceの請求データを表示できます。

このクエリは、各アカウント内の各ウェアハウスが、Query Acceleration Serviceに使用するクレジットの合計数を返します(月初来)。

SELECT account_name,
       warehouse_name,
       SUM(credits_used) AS total_credits_used
  FROM SNOWFLAKE.ORGANIZATION_USAGE.QUERY_ACCELERATION_HISTORY
  WHERE usage_date >= DATE_TRUNC(month, CURRENT_DATE)
  GROUP BY 1, 2
  ORDER BY 3 DESC;
Copy

QUERY_ACCELERATION_HISTORY 関数を使用した請求の表示

Information Schema QUERY_ACCELERATION_HISTORY 関数を使用して請求データを表示することもできます。

次の例では、 QUERY_ACCELERATION_HISTORY 関数を使用して、過去12時間以内にこのサービスによって高速化されたクエリに関する情報を返します。

SELECT start_time,
       end_time,
       credits_used,
       warehouse_name,
       num_files_scanned,
       num_bytes_scanned
  FROM TABLE(INFORMATION_SCHEMA.QUERY_ACCELERATION_HISTORY(
    date_range_start=>DATEADD(H, -12, CURRENT_TIMESTAMP)));
Copy

コストとパフォーマンスの評価

このセクションでは、Query Acceleration Serviceを有効にする前後の、クエリのパフォーマンスとコストを評価するのに役立つサンプルクエリを示します。

ウェアハウスとQuery Acceleration Serviceのコストの表示

次のクエリは、特定のウェアハウスに対する、ウェアハウスとQuery Acceleration Serviceのコストを計算します。ウェアハウスのQuery Acceleration Serviceを有効にした後にこのクエリを実行すると、クエリアクセラレーションを有効にする前と後のコストを比較できます。クエリの日付範囲は、Query Acceleration Serviceの最初のクレジット使用の8週間前から、Query Acceleration Serviceの最後に発生したコストの8週間後(または現在の日付)までです。

注釈

  • このクエリは、Query Acceleration Serviceを有効にする前後で、ウェアハウスのプロパティとワークロードが同じである場合に、サービスのコストを評価するのに最も役立ちます。

  • このクエリは、ウェアハウス内で高速化されたクエリに対するクレジットの使用があった場合にのみ結果を返します。

この例のクエリは、 my_warehouse のウェアハウスとQuery Acceleration Serviceのコストを返します。

WITH credits AS (
  SELECT 'QC' AS credit_type,
         TO_DATE(end_time) AS credit_date,
         SUM(credits_used) AS num_credits
    FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
    WHERE warehouse_name = 'my_warehouse'
    AND credit_date BETWEEN
           DATEADD(WEEK, -8, (
             SELECT TO_DATE(MIN(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
               WHERE warehouse_name = 'my_warehouse'
           ))
           AND
           DATEADD(WEEK, +8, (
             SELECT TO_DATE(MAX(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
               WHERE warehouse_name = 'my_warehouse'
           ))
  GROUP BY credit_date
  UNION ALL
  SELECT 'WC' AS credit_type,
         TO_DATE(end_time) AS credit_date,
         SUM(credits_used) AS num_credits
    FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
    WHERE warehouse_name = 'my_warehouse'
    AND credit_date BETWEEN
           DATEADD(WEEK, -8, (
             SELECT TO_DATE(MIN(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
               WHERE warehouse_name = 'my_warehouse'
           ))
           AND
           DATEADD(WEEK, +8, (
             SELECT TO_DATE(MAX(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
               WHERE warehouse_name = 'my_warehouse'
           ))
  GROUP BY credit_date
)
SELECT credit_date,
       SUM(IFF(credit_type = 'QC', num_credits, 0)) AS qas_credits,
       SUM(IFF(credit_type = 'WC', num_credits, 0)) AS compute_credits,
       compute_credits + qas_credits AS total_credits,
       AVG(total_credits) OVER (
         PARTITION BY NULL ORDER BY credit_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
         AS avg_total_credits_7days
  FROM credits
  GROUP BY credit_date
  ORDER BY credit_date;
Copy

クエリのパフォーマンスの表示

このクエリは、特定のウェアハウスのクエリアクセラレーション対象クエリの平均実行時間を返します。クエリの日付範囲は、Query Acceleration Serviceの最初のクレジット使用の8週間前から、Query Acceleration Serviceの最後に発生したコストの8週間後(または現在の日付)までです。この結果は、Query Acceleration Serviceを有効にした後に、平均クエリパフォーマンスがどのように変化したかを評価するのに役立つ場合があります。

注釈

  • このクエリは、Query Acceleration Serviceを有効にする前後で、ウェアハウスのワークロードが変わらない場合に、クエリのパフォーマンスを評価するのに最も役立ちます。

  • ウェアハウスのワークロードが安定していれば、 num_execs 列の値も一定に保たれるはずです。

  • クエリ結果の num_execs 列の値が大幅に増加または減少した場合、このクエリの結果はクエリのパフォーマンス評価には役に立たない可能性があります。

この例のクエリは、日ごとのクエリ実行時間を返し、ウェアハウス my_warehouse で高速化の対象となるクエリの前の週の7日間の平均を計算します。

WITH qas_eligble_or_accelerated AS (
  SELECT TO_DATE(qh.end_time) AS exec_date,
        COUNT(*) AS num_execs,
        SUM(qh.execution_time) AS exec_time,
        MAX(IFF(qh.query_acceleration_bytes_scanned > 0, 1, NULL)) AS qas_accel_flag
    FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY AS qh
    WHERE qh.warehouse_name = 'my_warehouse'
    AND TO_DATE(qh.end_time) BETWEEN
           DATEADD(WEEK, -8, (
             SELECT TO_DATE(MIN(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
              WHERE warehouse_name = 'my_warehouse'
           ))
           AND
           DATEADD(WEEK, +8, (
             SELECT TO_DATE(MAX(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
              WHERE warehouse_name = 'my_warehouse'
           ))
    AND (qh.query_acceleration_bytes_scanned > 0
          OR
          EXISTS (
            SELECT 1
              FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE AS qae
               WHERE qae.query_id = qh.query_id
               AND qae.warehouse_name = qh.warehouse_name
          )
         )
    GROUP BY exec_date
)
SELECT exec_date,
       SUM(exec_time) OVER (
         PARTITION BY NULL ORDER BY exec_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
       ) /
       NULLIFZERO(SUM(num_execs) OVER (
         PARTITION BY NULL ORDER BY exec_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
       ) AS avg_exec_time_7days,
      exec_time / NULLIFZERO(num_execs) AS avg_exec_time,
      qas_accel_flag,
      num_execs,
      exec_time
  FROM qas_eligble_or_accelerated;
Copy

ステートメントからの出力には次の列が含まれます。

説明

EXEC_DATE

クエリ実行プラン

AVG_EXEC_TIME_7DAYS

EXEC_DATE を含む過去7日間の平均実行時間。

AVG_EXEC_TIME

平均クエリ実行時間。

QAS_ACCEL_FLAG

クエリが高速化された場合は1、クエリが高速化されなかった場合は NULL。

NUM_EXECS

高速化されたクエリの数。

EXEC_TIME

クエリアクセラレーションの対象となるすべてのクエリの総実行時間。

検索最適化との互換性

クエリアクセラレーションと 検索最適化 を併用して、クエリのパフォーマンスを最適化できます。まず、検索最適化により、クエリに不要な マイクロパーティション を削除できます。次に、 対象となるクエリ については、クエリアクセラレーションによって残りの作業の一部をサービスが提供する共有コンピューティングリソースにオフロードできます。

両方のサービスによって高速化されるクエリのパフォーマンスは、ワークロードと利用可能なリソースによって異なります。