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

朝倉 佑貴 asakura.yuuki @ nttcom.co.jp
2013年 7月 26日 (金) 09:53:48 JST


朝倉と申します。
間違っていたらすいません。

FetchSizeの設定が入っているんですよね?
FetchSizeは、AutoCommitがfalseのときだけ、
有効に働きます。

FetchSizeを指定する→CURSORが使われるということで、
cursor_tuple_franctionで指定した割合のレコードを取得するまでの
時間が最短になるように実行計画が選択されます。

これで、CURSORの有効/無効の違いで、AutoCommitの
違いにより実行計画が異なることの説明がつきそうな気が
しますが、いかがでしょうか。






(2013/07/25 20:52), mlus wrote:
> またまた関係ないかもしれませんが・・・・
>
>
>>                         conn.setAutoCommit(false);
>>
>>                         String sql = "SELECT COUNT(*) FROM ( SELECT ・・・省略
>>
>>                         PreparedStatement st = conn.prepareStatement(sql);
>
>>                         st.setFetchSize(1000);
> これ、なくしてみたらどうですかね?
>                            // st.setFetchSize(1000);
>
>>                         st.setObject(1, "00060000");
>>                         st.setObject(2, "00060000");
>
> あと、
>
> PreparedStatement prepareStatement(String sql,
>                                    int resultSetType,
>                                    int resultSetConcurrency) prepareStatement
>
> こっちのほう使って、一方通行カーソルと、readonly指定 とか・・・。 関係なかったらすいません。
>
>

-- 
----------------------------------------------------
 NTTコムウェア株式会社
  品質生産性技術本部 技術SE部
  基盤ソフトSE・OSS部門  OSS・DB技術担当

   朝倉 佑貴(asakura.yuuki @ nttcom.co.jp)

 〒261-0023 千葉県千葉市美浜区中瀬1-6
  NTT幕張ビル 21F-EN
 TEL:043-211-2318 (内線:26-8239) 
----------------------------------------------------



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