[pgsql-jp: 35387] JDBC FetchSizeの指定が効きません

井口 隆 iguchi.takashi @ sorun.co.jp
2005年 5月 16日 (月) 18:48:32 JST


初めて質問します。井口と申します。

JavaのWebアプリからJDBC経由でPostgreSQLにアクセスする際、
Statement#executeQuery()メソッドで一度に大量のデータを読み込むのを
制限する為、Statement#setFetchSize()でFetchSizeを指定して試しています。

下記のソースでFetchSizeの値を変えて試していますが、常に
setFetchSize(0)(executeQuery()実行時に対称行を全て読み込む)指定時と
同じ動きをしているようです。
(処理時間、Webサーバの負荷、DBサーバの負荷等変わらず。
 対象テーブル件数より小さいFetchSizeでもrs.next()のループ中にDB通信の形跡な
し)

この件について情報が有りましたら宜しくご教示願います。

<テスト用ソース>
  Class.forName("org.postgresql.Driver");
  Connection con = DriverManager.getConnection(
    "jdbc:postgresql://xxx.xxx.xxx.xxx:5432/hogedb",
    "zzz",
    "zzz");
  Statement st = con.createStatement();

  st.setFetchSize(100); //ここを変えながら試す
  ResultSet rs = st.executeQuery("select t1.aaa,t1.bbb from t1");

  while (rs.next()){
   //取得データを処理
   String xx = rs.getString("aaa"); //等
    //以下略
  }

<テスト環境>
Java:j2sdk1.4.2_05
Tomcat:5.0.28
JDBC:pg74.215.jdbc3.jar
PostgreSQL:7.4.6








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