クエリインサイトは、スロークエリログと hg_table_info システムテーブルを組み合わせ、クエリの動作 (リソース消費、テーブルメタデータ、実行プラン、ロックアクティビティ) の全体像を提供します。 これを使用して、低速クエリの診断、障害の調査、および DDL 競合やテーブルロックがクエリ失敗の原因であるかどうかを判断します。
前提条件
開始する前に、以下を確認してください。
-
Hologres インスタンスにログインしていること。 詳細については、「インスタンスへのログイン」をご参照ください。
-
スロークエリログをクエリするために必要な権限を持っていること。 詳細については、「スロークエリログの表示と分析」をご参照ください。
データ収集のしきい値
クエリインサイトは、それぞれ独自の収集ルールを持つ 2 つのデータソースからデータを取得します。 クエリを実行する前にこれらのしきい値を確認し、データがいつ利用可能になるかを把握してください。
|
データ |
収集ルール |
注意 |
|
DML ステートメント |
実行時間 > 100 ms |
デフォルトのスロークエリログのしきい値 |
|
DDL ステートメント |
すべての DDL ステートメントが収集されます |
検索結果には実行時間 > 1 s のステートメントのみが表示されます |
|
実行プラン |
実行時間 > 10 s |
プランはスロークエリログの |
|
テーブルメタデータ |
毎朝 1 回収集されます |
データは T+1 (翌日) に利用可能になります。本日作成されたテーブルは明日クエリ可能になります |
|
DDL 競合分析 |
クエリ実行の前後 1 分間のウィンドウをチェックします |
— |
クエリインサイトへのアクセス
クエリインサイトへの直接アクセス
クエリインサイトは、HoloWeb の 3 つの場所から利用できます。 クエリインサイトページでは、[Query Metadata] と [Table Metadata] を表示し、[Plan Visualization] と [Table Lock Analysis] を実行できます。
Diagnostics and Optimization から直接アクセスする:
-
Hologres 管理コンソールにログインします。
-
上部メニューの左側メニューで、目的のリージョンを選択します。
-
[Go to HoloWeb] をクリックします。
-
上部メニューで [Diagnostics and Optimization] を選択します。 次に、左側メニューで、[Metadata Warehouse Analysis] > [Query Insight] をクリックします。

クエリインサイトへのナビゲーション
SQL エディターからのナビゲーション:
HoloWeb SQL エディターでは、実行時間が 1 秒を超え、クエリ ID を含む SQL ステートメントにクエリインサイトへのリンクが表示されます。 リンクをクリックすると、クエリインサイトで直接クエリが開きます。
過去の低速クエリからのナビゲーション:
[Historical Slow Queries] ページのクエリリストで、目的のクエリの [Actions] 列にある
アイコンをクリックして、クエリインサイトに移動します。
クエリメタデータ
クエリメタデータは、Hologres のスロークエリログから取得されます。 [Query Metadata] タブで、[Instance Name] と [Query ID] を選択し、[Search] をクリックします。
このタブには、以下のセクションが表示されます。
基本情報
クエリのインスタンス ID、データベース、および Hologres バージョンを表示します。
クエリ情報
スロークエリログから収集された、クエリのユーザー、実行ステータス、および使用された実行エンジンを表示します。
リソース消費
スキャン機能や CPU 消費など、スロークエリログからのクエリ実行中のリソース使用状況を表示します。
その他の情報
クライアントの IP アドレスなど、スロークエリログからの追加メタデータを表示します。
SQL
完全な SQL ステートメントを表示します。 書式設定オプションを使用して整形して表示したり、ステートメントを直接コピーしたりできます。
クエリの詳細
クエリがパラメーター付きで実行された場合、このセクションには特定のパラメーター値が表示されます。 必要に応じて、パラメーターを SQL ステートメントにマージします。
実行プラン
スロークエリログの Plan フィールドから実行プランを表示します。
実行プランは、実行時間が 10 秒を超えるクエリに対してのみ収集されます。
プランの可視化機能を使用して、プランをグラフィカルに表示します。 実行プランの読み方については、「EXPLAIN と EXPLAIN ANALYZE」をご参照ください。
統計
スキャンされた行数や各演算子の実行時間など、スロークエリログの Statistics フィールドから取得した演算子レベルの消費データを表示します。 このデータを使用して、最も多くのリソースを消費している演算子を特定します。
読み取り/書き込みテーブル情報
クエリが読み取りまたは書き込みを行ったテーブルを一覧表示します。 いずれかのリンクをクリックすると、追加の分析画面に移動します。
-
[Table Metadata]:選択したテーブルのテーブルメタデータページを開きます。 テーブルメタデータは
hg_table_infoテーブルから取得され、T+1 ベースで更新されます。つまり、本日作成されたテーブルは、明日以降にクエリできるようになります。 -
[Table Lock Analysis]:テーブルロック分析ページを開き、クエリがデータ操作言語 (DML) 関連のロックを保持しているかどうかをチェックします。 これは、Hologres 実行エンジン (HQE) からの同時 DML 操作が原因で、固定プランのクエリが低速化する場合に役立ちます。
DDL 競合分析
クエリに関係するテーブルが、クエリの実行時間の 1 分前または 1 分後にデータ定義言語 (DDL) 操作の対象となったかどうかを示します。 クエリがエラーメッセージ "Query is canceled" で失敗した場合、このセクションは DDL 競合が失敗の原因であるかどうかを確認するのに役立ちます。
エラーメッセージ
クエリが失敗した場合、エラーの詳細がここに表示されます。 HoloWeb のクエリインサイトは、SQL エラーの解決に役立つ失敗の原因と推奨される修正を自動的に追加します。 一般的なSQLエラーについては、「Hologres SQL ステートメントに関する FAQ」をご参照ください。
テーブルメタデータ
テーブルメタデータは hg_table_info システムテーブルから取得され、毎朝1回更新されます。 データは T+1 ベースで利用可能です。
[読み取り/書き込みテーブル情報] セクションにある [Table Metadata] リンクをクリックするか、インスタンス名、データベース、スキーマ、およびメタデータ収集時間を直接入力して、テーブルメタデータに移動します。
このタブには、以下のセクションが表示されます。
-
基本情報:テーブル名、テーブルがパーティション化されているかどうか、およびパーティションの詳細。
-
テーブルメタデータ情報:テーブルの作成時間、メタデータの収集時間、およびストレージ容量。
-
テーブルプロパティ情報:プライマリキー (PK) や分散キーなど、テーブルに設定されているインデックス。
-
[テーブルスキーマ情報]:フィールド、フィールドタイプ、null 許容性、およびデフォルト値。
プランの可視化
プランの可視化は、スロークエリログの Plan フィールドをグラフィカルな実行プランとして表示します。
プランデータは、10 秒以上実行されるクエリに対してのみ収集されます。
最初に確認する項目:まず、クエリメタデータの [統計] セクションを確認します。 このセクションには演算子レベルの行数と実行時間が表示されるため、完全なプランのグラフを調べる前に、最もリソースを消費する演算子を特定できます。
実行プランの概念については、「EXPLAIN と EXPLAIN ANALYZE」をご参照ください。
テーブルロック分析
テーブルロック分析は、クエリが Hologres 実行エンジン (HQE) で DML 操作 (INSERT、UPDATE、または DELETE) を生成したかどうかをチェックします。 テーブルで SDK または HQE の読み取りクエリと HQE の DML クエリが同時に実行されている場合、ロックが存在します。
テーブルロック分析は、DML 関連のロックのみを検出し、DDL ロックは検出しません。
ロック競合が検出された場合は、同じテーブルに対して SDK クエリと HQE DML 操作を同時に実行しないようにしてください。
トラブルシューティング
エラー:relation with OID xxx does not exist
このエラーは、クエリに関係するテーブルが TRUNCATE または DROP 操作の対象となった結果、テーブルのオブジェクト識別子 (OID) が変更された場合に発生します。
調査方法:クエリインサイトにクエリ ID を入力し、[DDL 競合分析] セクションで、クエリの実行時に DDL ロックが存在したかどうかを確認します。

エラー:query is canceled
このエラーは、クエリの実行中に、クエリに関係するテーブルが TRUNCATE や DROP などの DDL 操作を受けた場合に発生します。
調査方法:クエリインサイトにクエリ ID を入力します。 [Query Metadata] タブで [DDL 競合分析] セクションを開き、影響を受けたテーブルに対する DDL 操作を表示します。

SDK SQL ステートメントの高レイテンシ
SDK SQL ステートメントの実行に想定以上の時間がかかる場合は、ロック競合を確認してください。
調査方法:[読み取り/書き込みテーブル情報] セクションで、[Table Lock Analysis] をクリックします。

分析によって HQE からの同時 DML ステートメントが示された場合、HQE DML 操作がテーブルロックを取得し、SDK クエリが待機状態になったことを意味します。 同じテーブルに対して両方の種類の操作を同時に実行しないようにしてください。
HQE DML 操作が見つからない場合、レイテンシはテーブルロックが原因ではありません。 詳細な調査については、「書き込みと更新のパフォーマンスの最適化」をご参照ください。
エラー:Dispatch query failed: The shards are incomplete
このエラーは、Hologres インスタンス内の 1 つ以上のシャードが、通常はコアダンプの結果として、不整合な状態になったことを示します。 この問題は、古いバージョン (r4.1.10 など) のソフトウェアの不具合が原因であり、接続数の問題とは関係ありません。
この問題を解決するには、Hologres インスタンスをバージョン 4.1.12 以降にアップグレードします。 最高の安定性を得るために、バージョン 4.1.18 以降にアップグレードすることを推奨します。 手順については、「インスタンスバージョンのアップグレード」をご参照ください。