[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 メーリングリストの案内