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 使わせない)と対象のテーブル