From: | Frédéric Houbie <fh(at)ionicsoft(dot)com> |
---|---|
To: | <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Re: Postgres 8.2 and setFetchSize |
Date: | 2007-09-19 12:12:13 |
Message-ID: | 95484F7A889A61469885286054F675DD51252A@altarf.ionicsoft.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
I have one more information, I tried the same code using my local Postgres database (on my XP, 8.2.4), it is working. What can I check on the server to see what's wrong ?
In my log, I can see it is using a cursor
2007-09-19 14:10:51.993 LOG: duration: 0.000 ms parse S_1: BEGIN
2007-09-19 14:10:51.993 LOG: duration: 0.000 ms bind S_1: BEGIN
2007-09-19 14:10:51.993 LOG: duration: 0.000 ms execute S_1: BEGIN
2007-09-19 14:10:51.993 LOG: duration: 0.000 ms parse S_2: SELECT * FROM SValues
2007-09-19 14:10:51.993 LOG: duration: 0.000 ms bind S_2/C_3: SELECT * FROM SValues
2007-09-19 14:10:51.993 LOG: duration: 0.000 ms execute S_2/C_3: SELECT * FROM SValues
20
Thanks
Frédéric
-----Message d'origine-----
De : pgsql-jdbc-owner(at)postgresql(dot)org [mailto:pgsql-jdbc-owner(at)postgresql(dot)org] De la part de Frédéric Houbie
Envoyé : mercredi 19 septembre 2007 13:54
À : pgsql-jdbc(at)postgresql(dot)org
Objet : [JDBC] Postgres 8.2 and setFetchSize
Hi,
I'm trying to use the setFetchSize method to get back results faster. I'm using PostgreSQL 8.2 under XP. I'm using postgresql-8.2-505.jdbc3.jar driver. I'm connecting to a Postgres on Linux (PostgreSQL 8.2.4 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)). I think that the setFetchSize do not work. I've read a lot about the conditions for that to work (autocommit false) but it's not working.
Here is my sample code:
public static void main(String[] args) throws Exception{
Connection con=null;
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String s_server = "jdbc:postgresql://regulus:5432/ignimport" ;
try {
con = DriverManager.getConnection(s_server, "bs", "");
} catch(Exception e)
{
e.printStackTrace();
}
Statement st = con.createStatement();
con.setAutoCommit(false);
st.setFetchSize(Integer.parseInt(args[0]));
System.out.println("FetchSize : " + st.getFetchSize());
String q="SELECT a FROM SValues WHERE Name = 'title'";
long t1 = System.currentTimeMillis();
ResultSet resultSet = st.executeQuery(q);
if (resultSet.next())
{
String s = resultSet.getString(1);
}
long t2 = System.currentTimeMillis();
System.out.println("exec time : " + (t2 - t1));
}
It always take the same time (long time) whatever value I pass to this code for the FetchSize. It is really a problem because I can't use the LIMIT keywords as I don't know the exact number of records I need.
Any advice ?
Thanks
Frédéric Houbie
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings
From | Date | Subject | |
---|---|---|---|
Next Message | Oliver Jowett | 2007-09-19 13:24:35 | Re: Postgres 8.2 and setFetchSize |
Previous Message | Frédéric Houbie | 2007-09-19 11:53:31 | Postgres 8.2 and setFetchSize |