Re: executeQuery and busy waiting - Mailing list pgsql-jdbc

From Garrick Dasbach
Subject Re: executeQuery and busy waiting
Date
Msg-id 1056740406.24233.29.camel@bock
Whole thread Raw
In response to Re: executeQuery and busy waiting  (Dave Cramer <Dave@micro-automation.net>)
List pgsql-jdbc
It's about as simple a JDBC program as you can get.  Source included
below, minus company info ofcourse.

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try{
            Class.forName("org.postgresql.Driver");
            conn = DriverManager.getConnection("jdbc:postgresql://server_ip/db_name", "user", "password");
            stmt = conn.createStatement();
            rs = stmt.executeQuery("select myFunction(2)");
            if(rs.next()){
                System.out.println("Function Execution Successfull.");
            }
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            try{    rs.close();    } catch (Exception e){}
            try{    stmt.close();    } catch (Exception e){}
            try{    conn.close();    } catch (Exception e){}
        }
    }

Garick Dasbach


On Fri, 2003-06-27 at 13:53, Dave Cramer wrote:
> Garrick,
>
> It would help if you posted a small program to replicate the problem.
>
> Dave
> On Fri, 2003-06-27 at 14:44, Garrick Dasbach wrote:
> > I'm working on a project with Postgresql and I'm running into a strange
> > problem.
> >
> > I have a Java Program running on the Database server that periodicly
> > connects to the Database and runs a pl/pgsql function.  This function
> > should run fairly fast, but could take several minutes based on the load
> > of the server and amount of information it needs to process.
> >
> > Running the function from psql takes 40 seconds under no load and
> > minimal data, but when I run the function from java using JDBC it takes
> > 20-30 minutes.
> >
> > Checking top, this is a Linux system, I see that the java program takes
> > up 99% of the CPU when it's running this function through executeQuery.
> > Is executeQuery() doing a busy wait for the data from postgres?  It
> > seems a bit absurd that the executeQuery method would hijack 99% of the
> > CPU waiting for results and slowing everything else on the system down.
> >
> > The second problem I am noticing is that if I move the java program to
> > another machine, to keep java from stealing all the CPU cycles, the
> > function still takes 20-30 minutes to run through java, but only takes
> > 40 seconds to run through psql.  What's the deal?
> >
> > Any help would be appreciated.
> >
> > Garrick Dasbach
> >
> > Software Developer
> > MusicRebellion.com, Inc.
> > Garrick@musicrebellion.com
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 9: the planner will ignore your desire to choose an index scan if your
> >       joining column's datatypes do not match
> >
> --
> Dave Cramer <Dave@micro-automation.net>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org



pgsql-jdbc by date:

Previous
From: Dave Cramer
Date:
Subject: Re: executeQuery and busy waiting
Next
From: Garrick Dasbach
Date:
Subject: Re: executeQuery and busy waiting