BigQuery アドバンスト ランタイムを使用する

このドキュメントでは、BigQuery アドバンスト ランタイムを有効または無効にする方法と、アドバンスト ランタイムがクエリのパフォーマンスに与える影響を評価する方法について説明します。

高度なランタイムは、BigQuery クエリ プロセッサに拡張ベクトル化を提供します。拡張ベクトル化は、BigQuery ストレージでのフィルタ評価、専用のデータエンコード、最適化手法など、クエリ処理の重要な側面にベクトル化を適用することで、ベクトル化されたクエリの実行を拡張します。

ロールと権限

構成設定を指定するために必要な権限を取得するには、プロジェクトに対する BigQuery 管理者 roles/bigquery.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

高度なランタイムを有効にする

プロジェクトで高度なランタイムを有効にするには、ALTER PROJECT ステートメントを使用してデフォルト構成を変更します。ステートメントで、query_runtime 引数を 'advanced' に設定します。次に例を示します。

ALTER PROJECT PROJECT_NAME
SET OPTIONS (
  `region-LOCATION.query_runtime` = 'advanced'
);

次のように置き換えます。

  • PROJECT_NAME: ��ロジェクトの名前
  • LOCATION: プロジェクトのロケーション

変更が有効になるまで数分かかることがあります。

高度なランタイムを有効にすると、クエリジョブを作成したユーザーに関係なく、プロジェクト内の対象クエリで高度なランタイムが使用されます。

高度なランタイムを無効にする

プロジェクトの高度なランタイムを無効にするには、ALTER PROJECT ステートメントを使用してデフォルト設定を変更します。ステートメントで、query_runtime 引数を NULL に設定します。次に例を示します。

ALTER PROJECT PROJECT_NAME
SET OPTIONS (
  `region-LOCATION.query_runtime` = NULL
);

次のように置き換えます。

  • PROJECT_NAME: プロジェクトの名前
  • LOCATION: プロジェクトのロケーション

変更が有効になるまで数分かかることがあります。

クエリのパフォーマンスを評価する

管理ジョブ エクスプローラINFORMATION_SCHEMA ビューを使用して、高度なランタイムがクエリの実行時間とスロット使用量に与える影響を評価できます。

高度なランタイムを有効にしたときと有効にしていないときのクエリのパフォーマンスを評価する手順は次のとおりです。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    BigQuery に移動

  2. クエリエディタで新しいタブを開きます。

  3. そのクエリタブでキャッシュに保存されたクエリ結果の使用を無効にする

  4. テストクエリをクエリタブに入力するか、コピーします。

  5. テストクエリを数回実行して、ベースラインのパフォーマンスを確立します。各実行後に、次の手順でクエリのパフォーマンス指標を決定します。

    1. 管理ジョブ エクスプローラでクエリ実行の詳細を表示します。
    2. 新しいクエリタブで次のクエリを実行して、INFORMATION_SCHEMA.JOBS_BY_USER ビュー からジョブのパフォーマンス データを取得します。

      SELECT
          job_id,
          end_time - start_time AS duration,
          total_slot_ms,
          query
      FROM
        `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
      WHERE
          creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
          AND job_type='QUERY'
          AND total_slot_ms IS NOT NULL
      ORDER BY
          creation_time DESC,
          query ASC
      LIMIT 1000;
      
  6. 高度なランタイムを有効にする

  7. ステップ 5 を繰り返します。

  8. 高度なランタイムを有効にする前後のテストクエリのクエリ レイテンシとスロット使用量の指標を比較します。