[pgsql-jp: 40884] auto_explainの実行計画について

nozawakz @ nttdata.co.jp nozawakz @ nttdata.co.jp
2011年 8月 12日 (金) 21:59:21 JST


お世話になります。野沢と申します。

【背景】
コネクションプーリングを行っているような状況で
PostgreSQLプロセスの実行計画情報がどのようなタイミングで
更新されるかどうか実験したいと考えております。

下記の資料では、
http://www.postgresql.jp/events/pgcon2011/C-2.pdf

------------------------------------
8.2以前での利用について
?8.3以降のPrepared StatementはANALYZE,VACUUM,DDLの変更の度に、
実行プランを再作成するが、8.2以前では最初に生成した実行プランを使い続けるため、
悪影響を及ぼす可能性あり。
------------------------------------

との記載があり、
ANALYZE or VACUUM ANALYZE or autovacuumにより、
8.2以前でも統計情報は更新されるが、
Prepared StatementによるSQLでは、
Plannerは最初に生成した実行プランを使い続ける認識です。

【質問】
tomcatのコネクションプーリングであるDBCPを使い、
PostgreSQLプロセスを複数常駐させ、Prepared StatementされたSQLの実行計画を
contrib/auto_explainによりログに出力させることにより
ANALYZE後、8.2以前と8.3以降で実行計画が8.3以降のみ変わることを
確認しようと考えております。

contrib/auto_explainはPrepared StatementされたSQLの実行計画を
出力させることは可能でしょうか。
それとも、最新の統計情報を元に生成した実行計画を
出力させるのでしょうか。

ご存知の方がいらっしゃいましたらご教授ください。


以上、よろしくお願い致します。



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