pg_hint_planとPPASのHINT

pg_hint_planとPPAS(Postgres Plus Advanced Server)に実装されているHINT機能の関係をPPASのマニュアルちょっと調べてみたけど、別物っぽいですね。
てっきりPPASで実装しているHINT機能ををHOOKとして独立させたものなのかと思ってたから、ちょっと意外でした。

HINT機能の利用方法

  • pg_hint_planはpostgresql.confに "shared_preload_libraries = 'pg_hint_plan'" を追加する。
  • (たぶん)PPASでは何も設定しなくてもHINT機能が使える?

コメント形式

  • pg_hint_plan用のHINT用のコメントは "/+* */" という形式のみ。
  • PPASでは上記に加えて、 "--+ " 形式もサポートしている。

モード

  • これに該当する機能はpg_hint_planにはない。
  • PPASにはOptimize Modeというものがある。
    • GUCに OPTIMIZER_MODE が追加されている。
    • 検索結果の件数によって、HINTが有効になるかどうかを決めるオプションっぽい?

指定可能なHINT

PPASに結合順序指定らしき指定がなかったのが、ちょっと意外(見落としてる?)。

pg_hint_plan
  • EXPLAINで選択されるオペレータとテーブル(またはインデクス)を指定
  • 結合方式指定(を使う or 使わせない)と対象のテーブル
  • 結合順序指定(テーブルの結合順序指定)
PPAS
  • Access Method Hints
    • インデクス使用可否とテーブルまたはインデクスを指定
  • 結合方式指定(を使う or 使わせない)と対象のテーブル