OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

SQLヒントを利用して、デバッグやプロファイリング時に便利な識別子をクエリに付与する

公開日:
更新日:
基本操作
#vsql

実行中または過去に実行したクエリの情報を確認する目的でquery_profilesテーブルを検索することがあります。
しかし、query_profilesテーブルには過去に実行したクエリが大量に保存されているため、目的のクエリ情報を検索するのは少し大変です。
※session_id、transaction_id、statement_id列を条件で指定することで、目的のクエリ情報を検索することは可能ですが、それらのIDを控えていないとそのIDを探すのもまた大変です。

このような場合、クエリ実行時に、SQLヒントでラベルを付与しておくことで、目的のクエリ情報を検索しやすくなります。

クエリにラベルを付与する方法

クエリにラベルを付与する場合はクエリ実行時に、labelというSQLヒントを指定します。

SELECT /*+ LABEL(任意のラベル名)*/ 列名 FROM テーブル名;

使用例

以下は、ssbmスキーマのdate1テーブルを検索するクエリに「私のクエリ」というラベルを付与した場合の例です。

dbadmin=> select /*+ LABEL(私のクエリ)*/ COUNT(*) FROM ssbm.date1;
 COUNT
-------
  2556
(1 row)

クエリにラベルを付与しても、実行結果に影響はありません。

上記クエリの情報をquery_profilesテーブルで検索する場合は、検索条件としてidentifier列を使用します。

dbadmin=> SELECT * FROM query_profiles WHERE identifier = '検索したいクエリのラベル名';

クエリの実行時間を確認する例)

dbadmin=> select identifier, query,query_start from query_profiles where identifier='私のクエリ';
-[ RECORD 1 ]---------------------------------------------------------
identifier  | 私のクエリ
query       | select /*+ LABEL(私のクエリ)*/ COUNT(*) FROM ssbm.date1;
query_start | 2018-08-13 10:37:56.7949+09

このように、identifier列を条件列として指定するのみで、目的のクエリを検索できます。

その他のヒント句については以下の記事をご参考ください。
SQLヒントを利用する(7.2新機能)
https://www.ashisuto.co.jp/cm/analytics-database/sql_hint_7-2.html

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。