BigQuery の高度なランタイムを使用する

BigQuery の高度なランタイムは、ユーザーの操作やコードの変更を必要とせずに分析ワークロードを自動的に高速化するように設計されたパフォーマンス強化機能のセットです。このドキュメントでは、ベクトル化の強化や短いクエリの最適化など、これらのパフォーマンスの強化について説明します。

ロールと権限

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

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

拡張ベクトル化

ベクトル化された実行は、CPU キャッシュ サイズに合わせたブロック単位でデータの列を処理し、単一命令複数データ(SIMD)方式の命令を使用するクエリ処理モデルです。強化されたベクトル化により、BigQuery のベクトル化されたクエリ実行がクエリ処理の次の側面に拡張されます。

  • Capacitor ストレージ形式内の特殊なデータ エンコードを活用することで、エンコードされたデータに対してフィルタ評価オペレーションを実行できます。
  • 特殊なエンコードはクエリプランを通じて伝播されるため、エンコードされた状態のままより多くのデータを処理できます。
  • BigQuery は、式フォールディングを実装して決定論的関数と定数式を評価することで、複雑な述語を定数値に簡略化できます。

短いクエリの最適化

通常、BigQuery はシャッフル中間レイヤを使用して、分散環境でクエリを実行します。短いクエリの最適化では、単一ステージで実行できるクエリを動的に特定し、レイテンシとスロット消費量を削減します。クエリが単一のステージで実行される場合、特殊なエンコードをより効果的に使用できます。これらの最適化は、ジョブの起動、メンテナンス、結果の取得のレイテンシを最小限に抑えるオプション ジョブ作成モードで使用すると最も効果的です。

短いクエリの最適化の対象となるかどうかは動的に決まり、次の要因の影響を受けます。

  • データスキャンの予測サイズ。
  • 必要なデータ移動の量。
  • クエリフィルタの選択性。
  • ストレージ内のデータの種類と物理的なレイアウト
  • クエリの全体的な構造
  • 過去のクエリ実行の履歴統計情報

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

2025 年 9 月 15 日から 2026 年初頭にかけて、BigQuery はすべてのプロジェクトで高度なランタイムをデフォルトのランタイムとして使用するようになります。既存のプロジェクトまたは組織で高度なランタイムを有効にするには、ALTER PROJECT ステートメントまたは ALTER ORGANIZATION ステートメントを使用して、デフォルト構成を変更します。ステートメントで、query_runtime 引数を 'advanced' に設定します。例:

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

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

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

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

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