はじめに

スーパープロジェクションを最適化した状態でパフォーマンスに満足のいかないクエリがある場合、クエリスペシフィックプロジェクション(以降、QSP)を作成することでチューニングできます。
本記事では、以下のようなケースにおいて、QSPの利用状況を確認する方法を紹介します。
 
  • QSPによってチューニングの効果が得られた後、例えば1年後などに
      そのQSPが現在も利用されているか確認したい場合
  •  
  • 効果的に利用されているQSPを特定し、それを参考に他のQSP作成を検討する場合

  • プロジェクションの種類や最適化については、以下の記事をご参照ください。

  • プロジェクションの概要
  • http://vertica-tech.ashisuto.co.jp/projection-description/

  • プロジェクション最適化に関するまとめ記事
  • http://vertica-tech.ashisuto.co.jp/optimize-projection

    クエリスペシフィックプロジェクションの利用状況を確認する方法

    以下のSQLを実行することにより、条件句で指定した期間にクエリスペシフィックプロジェクションが利用された回数を確認できます。
    利用されていない場合は、検索結果が0件になります。

    ※システムテーブルに格納されている履歴情報は一定期間を過ぎると古いものから削除されるため、定期的に出力結果を保存しておく必要があります。


    <システムテーブルの内容>

    システムテーブル名列名列の内容上述SQLでの記述箇所
    projection_usageanchor_table_schemaスキーマ名SELECTリスト
    projection_usageanchor_table_nameテーブル名SELECTリスト
    projection_usageprojection_nameプロジェクション名SELECTリスト
    projection_usageio_typeI/Oタイプ
    ・'input'はクエリによるアクセス
    ・outputはデータロードによるアクセス
    WHERE句
    projection_usagequery_start_timestampプロジェクションを利用したクエリの実行開始日時WHERE句
    projectionsis_prejoinプリジョインプロジェクションか否かを示すブール値
    ・'t'は真
    ・'f'は偽
    WHERE句
    projectionsis_super_projectionスーパープロジェクションか否かを示すブール値
    ・'t'は真
    ・'f'は偽
    WHERE句
    projectionsis_aggregate_projectionアグリゲートションか否かを示すブール値
    ・'t'は真
    ・'f'は偽
    WHERE句
    projectionsis_key_constraint_projectionキー制約プロジェクションか否かを示すブール値
    ・'t'は真
    ・'f'は偽
    WHERE句


    検証バージョンについて

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