ぱんぴんぐれんま

医療ITエンジニアのブログです

BigQueryの実行グラフ機能を使ってパフォーマンスチューニングを簡単にする

この記事の結論

  • BigQueryの実行グラフは便利だから使ってみてね

「実行グラフ」とは?

2022年11月02日よりプレビュー版として利用可能になりました、BigQueryの実行を調査するための機能です。

Get query performance insights  |  BigQuery  |  Google Cloud

クエリ実行グラフは、クエリパフォーマンスの詳細を調査するための直感的なインターフェイスを提供します。これを使えば、実行中や完了したクエリのクエリプラン情報をグラフィカルに確認することができます。

使い方

しれっと追加されているBigQueryの実行グラフ機能

これをクリックすると、なんということでしょう。 今まであれだけ見にくかったBigQueryの実行詳細情報が、匠の力によりグラフィカルに綺麗に整理されて見やすくなっているではありませんか。 しかも、右上にはダンジョンマップみたいなやつがついている親切設計です。

アフター

※ビフォー:今までの実行の詳細の画面

ビフォー

機能紹介

機能1:実行情報の表示

上のタブの「実行情報を表示する」をONにすると、スロット時間、実行時間、転送バイト数、オーバーフローされたバイト数などがブロックの中の情報に表示されます。

実行情報を表示する機能

機能2:ハイライト表示

上のタブの「期間別の上位のステージをハイライト表示する」/「処理別の上位のステージをハイライト表示する」をONにすると、 実際の実行時間/使用したスロット時間順でボトルネックとなっている処理を色付け表示できます。

ハイライト表示

例えば、上の図の例ですと「テーブルC」に関する読み出し処理が最も時間がかかっていることが分かりますので、この部分のクエリを改善すればよいことが分かりますね。

機能3:詳細表示

ブロックをクリックすると右のサイドバーにより詳細の情報が表示されます。

詳細情報

活用例

実例

実例としてはBigQueryのWHERE句とJOIN句の扱いでこの機能を活用しました。

  • Strategies for optimizing your BigQuery queries - YouTube の5:00の部分の「Optimization: Filter before JOINs」を参照
    最適化手法(Googleの動画より引用)
    上記の画像でも記載の通り、正しくWHERE句指定を行うことで最適化によりJOINの結合前にWHEREが実行されデータ量を削減し、高速化を図ることができます。

今まで記事で紹介していた例でもクエリにWHEREがある場合には、結合前にデータが削減されるため、以下のように高速に動作するようになります。

WHERE文あり

こうしたクエリのチューニングがより簡単に便利になるので、皆さんも是非、この機能を活用ください。

以上、よろしくお願いいたします。