クエリのパフォーマンス指標を把握する

システム アクティビティの [クエリのパフォーマンス指標] Explore では、Looker インスタンスから実行された各クエリの詳細な内訳を確認できます。

たとえば、この Explore を使用して、読み込みに最も時間がかかるクエリのコンポーネントを調べることができます。この Explore を使用して、クエリのパフォーマンスの傾向と異常を特定することもできます。

[System Activity] で使用できる Explore の詳細については、System Activity Explore を使用した Looker 使用状況のモニタリングに関するドキュメント ページをご覧ください。

クエリのパフォーマンス指標の確認

クエリ パフォーマンス指標は、System Activity の [Query Performance Metrics] で確認できます。クエリ パフォーマンス指標の Explore を表示するには、Looker 管理者であるか、see_system_activity 権限を持っている必要があります。

Looker のクエリのライフサイクルの把握

Looker がデータベースに送信する各クエリは複数のフェーズを通過し、それぞれにいくつかのステップがあります。これらの各ステップは、クエリのパフォーマンス指標の Explore でディメンションとして表されています。

大まかに言うと、フェーズは次のように概念化できます。

  1. キュー: クエリは、使用可能な非同期ワーカーを待機します。
  2. 初期化と接続: ワーカーがクエリを準備し、データベースに接続します。
  3. クエリの実行: Looker は、メインクエリと、合計や派生テーブルなどの追加クエリをデータベースで実行し、結果を読み込みます。
  4. 結果を処理中: Looker が結果を後処理し、キャッシュに書き込みます。

Async processing は、非同期ワーカーがクエリに費やした合計時間を追跡します。これには、フェーズ 2 からフェーズ 4 までが含まれます。Explore とダッシュボードからのクエリの場合、これらのフェーズの累積時間は Async processing 値とほぼ同じです。ダウンロード、スケジュール設定された配信、その他のエクスポートされた結果の場合、Stream to Cache は他のフェーズと重複します。このような場合、個々のフェーズの合計時間が Async processing の合計時間を超えることがあります。

クエリのパフォーマンス指標

以降のセクションでは、各クエリのフェーズを時系列順に示します。各クエリフェーズのセクションには、クエリステップがアルファベット順に表示されます。各クエリステップの指標は、経過時間(秒単位)で測定されます。

タイミング: キュー

クエリのステップ 指標の説明
Queued 非同期ワーカーがクエリを実行できるようになるまでクエリが待機するのに費やした時間(秒)。

タイミング: 初期化と接続

クエリのステップ 指標の説明
Acquire Connection Looker インスタンスが顧客データベースに接続するのにかかった時間(秒)。このステップには、ユーザーの認証情報を検索する時間と、接続プールが存在しない場合は接続プールを作成する時間が含まれます。
Cache Load 結果セットのキャッシュから未加工の結果を pull するのにかかった時間(秒)。
Explore Init: Computed prepare を開始するまでに Explore の初期化にかかった時間(秒)。このステップで null 値が返される場合、Explore は最初から読み込まれて解析されたのではなく、キャッシュから取得されたことを意味します(Explore Init: From Cache のステップをご覧ください)。
Explore Init: From Cache Explore の初期化をキャッシュから pull するためにかかった時間(秒)。このステップで null 値が返される場合は、Explore がキャッシュから pull されずに読み込まれ、解析されたことを意味します。(Explore Init: Computed のステップをご覧ください)。
Model Init: Computed クエリの実行に必要なモデルの読み込みと解析にかかった時間(秒)。このステップで null 値が返される場合、モデルは最初から読み込まれて解析されたのではなく、キャッシュから取得されたことを意味します。(Model Init: From Cache のステップをご覧ください)。
Model Init: From Cache キャッシュからモデル定義を pull するためにかかった時間(秒)。このステップで null 値が返される場合は、モデルがキャッシュから pull されずに読み込まれ、解析されたことを意味します(Model Init: Computed のステップをご覧ください)。
Per User Throttler ユーザーがクエリを実行するための接続が利用可能になるまでクエリが待機に費やした時間(秒)。
Prepare Explore の定義からクエリを準備するのにかかった時間(秒単位)。
Project Init LookML プロジェクトの初期化またはキャッシュからの読み取りにかかった時間(秒)。

タイミング: クエリの実行

クエリのステップ 指標の説明
Execute Grand Totals Query 顧客データベースで総計を生成するクエリを実行するのにかかった時間(秒)。合計と行の合計の両方が有効になっているクエリにのみ適用されます。
Execute Main Query 顧客データベースで primary クエリを実行するのにかかった時間(秒)。これには、接続の初期化時間やスロットル時間は含まれません。このタイミングは、接続の初期化とスロットルが完了した後に開始されます。
Execute Misc. Ancillary Queries 顧客データベースで、エクステントやディメンション フィルクエリなどのサポートクエリを実行するのにかかった時間(秒)。
Execute Row Totals Query 顧客データベースでクエリを実行して行の合計を生成するのにかかった時間(秒)。行の合計が有効になっているクエリにのみ適用されます。
Execute Totals Query 顧客データベースで合計を生成するクエリを実行するのにかかった時間(秒)。合計が有効なクエリにのみ適用されます。
Load Grand Totals Query In Memory クエリを読み込んで総計をメモリに生成するのにかかった時間(秒)。合計と行の合計の両方が有効になっている非ストリーミング クエリにのみ適用されます。
Load Main Query In Memory メイン クエリの結果が顧客データベースからメモリに読み込まれるまでにかかる時間(秒)。非ストリーミング クエリにのみ適用されます。
Load Misc. Ancillary Queries In Memory 範囲クエリやディメンション フィルクエリなどのサポート クエリをメモリに読み込むのにかかる時間(秒)。
Load Process and Stream Main Query (顧客データベースから)メインクエリを読み込み、(Looker インスタンス上で)処理してから(クライアントに)ストリーミングするのにかかった時間(秒)。ストリーミング クエリにのみ適用されます。
Load Row Totals Query In Memory クエリを読み込んで行の合計をメモリに生成するのにかかった時間(秒)。行の合計が有効な非ストリーミング クエリにのみ適用されます。
Load Totals Query In Memory クエリを読み込んで合計をメモリに生成するのにかかった時間(秒)。合計が有効な非ストリーミング クエリにのみ適用されます。
PDTs クエリに必要な永続的な派生テーブルの作成にかかった秒数。
Temporary DT 一時的な派生テーブルの作成にかかった秒数。MySQL など、共通テーブル式(CTE)またはインライン派生テーブルをサポートしていない言語にのみ適用されます。

タイミング: 結果の処理

クエリのステップ 指標の説明
Postprocessing クエリの後処理にかかった時間(秒)。接続が閉じられた後に発生します。
Stream to Cache 結果がキャッシュにストリーミングされる時間(秒)。ダウンロード、スケジュール設定された配信、その他のエクスポートされた結果の場合、このステップにはクエリの実行が含まれるため、他のフェーズの指標と重複します。

タイミング: 全体

クエリのステップ 指標の説明
Async processing 非同期ワーカーがクエリに費やした時間(秒)。ワーカーは、処理結果フェーズが完了するまでクエリの処理を続行するため、この指標は、このページの他のほとんどの指標と重複します。
Connection Held Looker インスタンスが顧客データベースへの接続を維持した時間(秒)。このステップには、顧客データベースが SQL クエリを実行するのにかかった時間が含まれます。

各指標には平均値もあります。[Timings: Summaries] グループには、各フェーズの合計時間と平均時間が表示されます。

BigQuery BI Engine の指標

Looker で BigQuery BI Engine を使用している場合は、クエリ パフォーマンス指標の Explore を使用して、クエリに関するデータベース固有の情報を表示できます。BI Engine を使用しないクエリと、BigQuery データベース以外のデータベースのクエリでは、これらの指標に null 値が返されます。

指標 指標の説明
BigQuery Job ID

クエリの BigQuery ジョブ ID(または NULL)。

BigQuery のクエリのレスポンス時間を短縮するため、Looker は jobCreationMode=JOB_CREATION_OPTIONAL を使用して BigQuery クエリを実行します。このモードでは、BigQuery がクエリを迅速に完了できると判断すると、BigQuery ジョブを作成するのではなく、すぐに結果を返すことを優先します。この場合、クエリには BigQuery クエリ ID が割り当てられます(BigQuery ジョブ ID は NULL になります)。

BigQuery が即時に結果を返せないと判断した場合、BigQuery はジョブを作成し、クエリには BigQuery ジョブ ID が割り当てられます(BigQuery クエリ ID は NULL になります)。

BigQuery Query ID

クエリの BigQuery クエリ ID(または NULL)。

BigQuery のクエリのレスポンス時間を短縮するため、Looker は jobCreationMode=JOB_CREATION_OPTIONAL を使用して BigQuery クエリを実行します。このモードでは、BigQuery がクエリを迅速に完了できると判断した場合、BigQuery は BigQuery ジョブを作成するのではなく、結果をすぐに返すことを優先します。この場合、クエリには BigQuery ジョブ ID ではなく BigQuery クエリ ID が含まれます。

BigQuery が即時に結果を返せないと判断した場合、BigQuery はジョブを作成し、クエリには BigQuery ジョブ ID が割り当てられます(BigQuery クエリ ID は NULL になります)。このフィールドが空白の場合、BigQuery はクエリをすぐに実行できず、代わりにクエリを実行するジョブを作成しました。BigQuery ジョブの ID を取得するには、代わりに BigQuery Job ID をご覧ください。

BI Engine Mode クエリが部分的に実行されたか、完全に実行されたか。このフィールドに指定できる値の詳細については、BI Engine のアクセラレーション統計情報をご覧ください。
BI Engine Reason クエリを完全に実行されなかった場合は、このフィールドに理由が表示されます。このメッセージは Google BigQuery から直接送信されます。

クエリのパフォーマンス指標を使用したトラブルシューティング

クエリ指標を分析すると、Looker インスタンスのパフォーマンスを向上させることができます。開始するには、[System Activity] ダッシュボードのリストから、[Performance Recommendations] ダッシュボードを選択します。