マテリアライズド ビューの推奨事項を管理する
このドキュメントでは、マテリアライズド ビューの Recommender の仕組みと、マテリアライズド ビューの推奨事項を表示して適用する方法について説明します。
はじめに
BigQuery マテリアライズド ビュー Recommender は、ワークロードのパフォーマンス向上と実行コストの削減に役立ちます。これらの推奨事項は、過去 30 日間のクエリ実行の特徴に基づいています。
マテリアライズド ビューは事前に計算されたビューで、パフォーマンスと効率を向上させるためにクエリの結果を定期的にキャッシュに保存します。マテリアライズド ビューは、スマート チューニングを使用して、ソーステーブルに対するクエリを透過的に書き換え、既存のマテリアライズド ビューを使用してパフォーマンスと効率を向上させます。
Recommender の仕組み
Recommender は、BigQuery でクエリジョブを実行するプロジェクトごとに推奨事項を毎日生成します。推奨事項は、過去 30 日間のワークロード実行の分析に基づいています。マテリアライズド ビューの Recommender は反復的なクエリパターンを探し、反復的なサブクエリを増分マテリアライズド ビューに移動した場合に節約できる費用を計算します。Recommender は、クエリ時の節約額とマテリアライズド ビューのアカウント維持費を検討し、これらの要因から大幅な改善が見込める場合に推奨事項を提案します。
次のクエリについて考えてみましょう。
WITH revenue AS
(SELECT l_suppkey as supplier_no,
sum(l_extendedprice * (1 - l_discount)) as total_revenue
FROM lineitem
WHERE
l_shipdate >= date '1996-01-01'
AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
GROUP BY l_suppkey)
SELECT s_suppkey,
s_name,
s_address,
s_phone,
total_revenue
FROM
supplier,
revenue
WHERE s_suppkey = supplier_no
AND total_revenue =
(SELECT max(total_revenue)
FROM revenue)
ORDER BY s_suppkey
この例は、上位のサプライヤーに関する情報を表示するクエリです。このクエリには、サプライヤー(l_suppkey
)ごとの総収益を表す revenue
という共通テーブル式(CTE)が含まれ、サプライヤーの total_revenue
がサプライヤー全体の max(total_revenue)
と一致する場合に、revenue
がサプライヤー テーブルと結合されます。その結果、総収益が最も多いサプライヤーの情報(l_suppkey
、s_name
、s_address
、s_phone
、total_revenue
)が計算されます。
このクエリは全体的に複雑すぎるため、増分マテリアライズド ビューには追加できませんが、supplier
CTE は単一テーブルの集計であり、これは増分マテリアライズド ビューでサポートされているクエリパターンです。supplier
CTE は、クエリの中で最も計算コストが高い部分でもあります。したがって、この例のクエリが常に変化するソーステーブルに対して繰り返し実行されている場合、マテリアライズド ビュー Recommender は supplier
CTE をマテリアライズド ビューに配置することを提案します。この例のクエリに対するマテリアライズド ビューの推奨事項は次のようになります。
CREATE MATERIALIZED VIEW mv AS
SELECT l_suppkey as supplier_no,
sum(l_extendedprice * (1 - l_discount)) as total_revenue
FROM lineitem
WHERE
l_shipdate >= date '1996-01-01'
AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
GROUP BY l_suppkey
Recommender API は、クエリ実行情報を分析情報の形式で返します。分析情報は、プロジェクトのワークロードの理解に役立つ検出結果であり、マテリアライズド ビューの推奨事項によってワークロードの費用がどのように改善されるかについて、より多くのコンテキストを提供します。
制限事項
- マテリアライズド ビュー Recommender は、データ処理をオプトアウトする標準プロセスをサポートしていません。マテリアライズド ビューの推奨事項の受信を停止する場合は、BigQuery Gemini の pre-GA 登録フォームを使用してリクエストしてください。
- マテリアライズド ビューの推奨事項は BigQuery にエクスポートできません。
始める前に
マテリアライズド ビューの推奨事項を表示または適用するには、Recommender API を有効にする必要があります。
必要な権限
マテリアライズド ビューの推奨事項にアクセスするために必要な権限を取得するには、BigQuery マテリアライズド ビュー Recommender 閲覧者(roles/recommender.bigqueryMaterializedViewViewer
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。
この事前定義ロールには、マテリアライズド ビューの推奨事項にアクセスするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
マテリアライズド ビューの推奨事項にアクセスするには、次の権限が必要です。
-
recommender.bigqueryMaterializedViewRecommendations.get
-
recommender.bigqueryMaterializedViewRecommendations.list
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
BigQuery における IAM ロールと権限の詳細については、IAM の概要をご覧ください。
マテリアライズド ビューの推奨事項を表示する
このセクションでは、Google Cloud コンソール、Google Cloud CLI、Recommender API を使用してマテリアライズド ビューの推奨事項と分析情報を表示する方法について説明します。
次のオプションのいずれかを選択します。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
推奨事項 アイコン
をクリックします。[BigQuery の推奨事項] ペインが開きます。[BigQuery のワークロード費用の最適化] で、[詳細を表示] をクリックします。
推奨事項のリストが表示され、現在のプロジェクトに生成されたすべての推奨事項が表示されます。このリストの各推奨事項に、推奨事項を適用した場合の推定節約額が表示されます。特定のマテリアライズド ビューの推奨事項またはテーブルの分析情報の詳細を表示するには、[詳細] をクリックします。
gcloud
特定のプロジェクトのマテリアライズド ビューの推奨事項を表示するには、gcloud recommender recommendations list
コマンドを使用します。
gcloud recommender recommendations list \ --project=PROJECT_NAME \ --location=REGION_NAME \ --recommender=google.bigquery.materializedview.Recommender \ --format=FORMAT_TYPE \
次のように置き換えます。
PROJECT_NAME
: クエリジョブを実行するプロジェクトの名前REGION_NAME
: クエリジョブが実行されるリージョンFORMAT_TYPE
: サポートされている gcloud CLI 出力形式(例: JSON)
プロパティ | サブタイプに関連 | 説明 |
---|---|---|
recommenderSubtype |
CREATE_MATERIALIZED_VIEW |
推奨事項の種類。 |
content.overview.sql |
CREATE_MATERIALIZED_VIEW |
マテリアライズド ビューを作成する DDL ステートメントの候補。 |
content.overview.slotMsSavedMonthly |
CREATE_MATERIALIZED_VIEW |
提案されたビューによって毎月節約されるスロット時間の推定値(ミリ秒単位)。 |
content.overview.bytesSavedMonthly |
CREATE_MATERIALIZED_VIEW |
提案されたビューによってスキャンされる推定バイト数(月単位)。 |
content.overview.baseTables |
CREATE_MATERIALIZED_VIEW |
将来の使用のために予約。 |
-
recommendations
レスポンスの他のフィールドの詳細については、REST リソース:projects.locations.recommenders.recommendation
をご覧ください。 - Recommender API の使用の詳細については、API の使用 - 推奨事項をご覧ください。
gcloud CLI を使用して、マテリアライズド ビューの推奨事項に関する分析情報を表示するには、gcloud recommender insights list
コマンドを使用します。
gcloud recommender insights list \ --project=PROJECT_NAME \ --location=REGION_NAME \ --insight-type=google.bigquery.materializedview.Insight \ --format=FORMAT_TYPE \
次のように置き換えます。
PROJECT_NAME
: クエリジョブを実行するプロジェクトの名前REGION_NAME
: クエリジョブが実行されるリージョンFORMAT_TYPE
: サポートされている gcloud CLI 出力形式(例: JSON)
プロパティ | サブタイプに関連 | 説明 |
---|---|---|
content.queryCount |
CREATE_MATERIALIZED_VIEW |
観測期間中にマテリアライズド ビューによって最適化可能な反復パターンのクエリの数。 |
- insights レスポンス内の他のフィールドの詳細については、REST リソース:
projects.locations.insightTypes.insights
をご覧ください。 - 分析情報の使用について詳しくは、API の使用 - 分析情報をご覧ください。
REST API
特定のプロジェクトのマテリアライズド ビューの推奨事項を表示するには、REST API を使用します。各コマンドに認証トークンを指定する必要があります。これは gcloud CLI を使用して取得できます。認証トークンの取得方法については、ID トークンの取得方法をご覧ください。
curl list
リクエストを使用して、特定のプロジェクトのすべての推奨事項を表示できます。
$ curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/recommenders/google.bigquery.materializedview.Recommender/recommendations
次のように置き換えます。
PROJECT_NAME
: BigQuery テーブルを含むプロジェクトの名前LOCATION
: プロジェクトのロケーション。
プロパティ | サブタイプに関連 | 説明 |
---|---|---|
recommenderSubtype |
CREATE_MATERIALIZED_VIEW |
推奨事項の種類。 |
content.overview.sql |
CREATE_MATERIALIZED_VIEW |
マテリアライズド ビューを作成する DDL ステートメントの候補。 |
content.overview.slotMsSavedMonthly |
CREATE_MATERIALIZED_VIEW |
提案されたビューによって毎月節約されるスロット時間の推定値(ミリ秒単位)。 |
content.overview.bytesSavedMonthly |
CREATE_MATERIALIZED_VIEW |
提案されたビューによってスキャンされる推定バイト数(月単位)。 |
content.overview.baseTables |
CREATE_MATERIALIZED_VIEW |
将来の使用のために予約。 |
-
recommendations
レスポンスの他のフィールドの詳細については、REST リソース:projects.locations.recommenders.recommendation
をご覧ください。 - Recommender API の使用の詳細については、API の使用 - 推奨事項をご覧ください。
REST API を使用して、マテリアライズド ビューの推奨事項に関する分析情報を表示するには、次のコマンドを実行します。
$ curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/insightTypes/google.bigquery.materializedview.Insight/insights
次のように置き換えます。
PROJECT_NAME
: BigQuery テーブルを含むプロジェクトの名前LOCATION
: プロジェクトのロケーション。
プロパティ | サブタイプに関連 | 説明 |
---|---|---|
content.queryCount |
CREATE_MATERIALIZED_VIEW |
観測期間中にマテリアライズド ビューによって最適化可能な反復パターンのクエリの数。 |
- insights レスポンス内の他のフィールドの詳細については、REST リソース:
projects.locations.insightTypes.insights
をご覧ください。 - 分析情報の使用について詳しくは、API の使用 - 分析情報をご覧ください。
マテリアライズド ビューの推奨事項を適用する
マテリアライズド ビューを作成するための推奨事項を適用するには、Google Cloud コンソールで、提案された CREATE MATERIALIZED VIEW
型の DDL ステートメントを実行します。
Google Cloud コンソールで [BigQuery] ページに移動します。
推奨事項 アイコン
をクリックします。[BigQuery の推奨事項] ペインが開きます。[BigQuery のワークロード費用の最適化] で、[詳細を表示] をクリックします。
推奨事項のリストが表示され、現在のプロジェクトに生成されたすべての推奨事項が表示されます。マテリアライズド ビューの推奨事項を見つけて、[詳細] をクリックします。
[BigQuery Studio で表示] をクリックします。SQL エディタが開き、
CREATE MATERIALIZED VIEW
DDL ステートメントが表示されます。表示されている
CREATE MATERIALIZED VIEW
ステートメントで、MATERIALIZED_VIEW
プレースホルダを一意のマテリアライズド ビュー名に変更します。CREATE MATERIALIZED VIEW
DDL ステートメントを実行して、推奨されるマテリアライズド ビューを作成します。
推奨事項に関する問題のトラブルシューティング
問題: 特定のテーブルに対する推奨事項が表示されない。
次のような状況では、マテリアライズド ビューの推奨事項が表示されないことがあります。
- プロジェクトで実行されたクエリジョブに、繰り返し発生するクエリパターンが見つからない。
- 繰り返し発生するクエリパターンは、増分マテリアライズド ビューの制限事項を満たしていないため、スマート チューニングに適したマテリアライズド ビューに追加できません。
- マテリアライズド ビューの作成にかかるメンテナンス費用が高くなる。たとえば、データ操作言語(DML)オペレーションによって変更されることが多いソーステーブルの場合、マテリアライズド ビューが完全に更新されるため、余分にコストが発生します。
- 共通の繰り返しパターンのあるクエリの数が十分でない。
- 1 か月あたりの推定削減額が少なすぎる(1 スロット未満)。
- プロジェクトで実行されるクエリジョブで、すでにマテリアライズド ビューが使用されている。
料金
推奨事項を表示する際に、費用やワークロードのパフォーマンスへの悪影響が発生することはありません。
マテリアライズド ビューを作成して推奨事項を適用すると、ストレージ、メンテナンス、クエリの費用が発生する可能性があります。詳細については、マテリアライズド ビューの料金をご覧ください。