[pgsql-jp: 41690] Re: ヒント句の使用について

MauMau maumau307 @ gmail.com
2014年 6月 29日 (日) 07:32:15 JST


MauMauといいます。

PostgreSQL自体にはヒント句の機能はありません。
ヒント句の機能を追加するための拡張が、PostgreSQLコミュニティとは独立した個人または組織により提供されています。
Googleでpg_hint_planで検索してみてください。
もしWindows版PostgreSQL 9.3で利用できることが動作で確認できましたら、そのことを共有いただけるとうれしいです。

もしpg_hint_planが利用できない場合、次のようにすることが考えられます。

1.まず、対象テーブルにデータを入れる。
 このデータの内容は、実可動環境で実際に使われるデータと同じ特徴を持つものにする。
2.テーブルに対してANALYZEを実行する。
 これにより、期待する典型的な統計情報がシステムカタログに記録される。
3.自動バキューム・デーモンが対象テーブルに対して自動ANALYZEを実行しないようにする。
 次のようなSQL文を実行する。
 ALTER TABLE table_name
  SET (autovacuum_analyze_threshold = 2147483647, 
autovacuum_analyze_scale_factor = 100);
 ただし、これは自動ANALYZEが完全に実行されないようにするわけではなく、
 非常に実行されにくくするための設定です。
 もし自動バキュームも実行しなくてよいなら、次のようにすれば、完全に自動ANALYZEを止められます。
 ALTER TABLE table_name
 SET (autovacuum_enabled = off);



以上です。

----- Original Message ----- 
From: "川端晃一" <kkouichi75 @ gmail.com>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Saturday, June 28, 2014 9:58 PM
Subject: [pgsql-jp: 41689]ヒント句の使用について


> 川端と申します。
>
> 同一処理を複数回実行した際に、実行計画の違いが
> 原因と思われるパフォーマンス劣化が発生しています。
>
> 使用しているテーブルが、ワーク的な意味合いのものの為、
> アナライズ時に0件となっていることが、原因と推測しています。
>
> そこで、ヒント句を使用して、実行計画を固定させようと
> 考えています。
>
> 環境として、Windows版のv9.3.4を使用しているのですが、
> ヒント句は、使用可能なのでしょうか?
>
> ご教授よろしくお願いいたします。
> 



pgsql-jp メーリングリストの案内