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