[pgsql-jp: 41453] AutoCommitをfalseにするとレスポンスが遅くなる

pascalpascal @ snow.plala.or.jp pascalpascal @ snow.plala.or.jp
2013年 7月 23日 (火) 17:29:53 JST


宮本と申します。

現在、PostgreSQL(9.1.6)を運用しております。

jdbc経由でPostgresqlに接続して、selectを実行するJavaのプログラムで
レスポンスが遅いという現象があり、調査したところ、
AutoCommitをfalseにすると、遅いということがわかりました。

AutoCommitをfalseにすると実行計画も違います。長いSQL文で結合が多く、
データ件数も多いため、Hash joinを使った方が早いのですが、
AutoCommitをfalseにすると、なぜか、Nested Loopが使われてしまいます。

AutoCommit  レスポンス      実行計画
---------------------------------------------
false        遅い(約3分)  Nested loop
true         早い(約6秒)  Hash join

環境
  OS: Redhat Enterprise Linux 5.7
  PostgreSQL: 9.1.6
  jdbc: postgresql-9.1-901.jdbc3.jar
(jdbcをpostgresql-9.1-903.jdbc3.jarやpostgresql-9.2-1003.jdbc3.jarにしても同じでした。)

これは仕様なのでしょうか。
それともバグなのでしょうか。
ネット上でいろいろ調べましたが、わかりませんでした。
どなたか情報をお持ちの方は教えていただけないでしょうか。
よろしくお願いします。


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