Обсуждение: Non-blocking SQL Execution

Поиск
Список
Период
Сортировка

Non-blocking SQL Execution

От
"Logan Bowers"
Дата:

Hello,

 

(sorry if this comes through twice)

 

I'm running a web application that needs to run several queries against several databases

to satisfy a single request.  To minimize latency I'd like to be able to issue

"<PreparedStatement Object>.executeQuery()" on each connection, allow the servers to

execute the queries in parallel, and then only block when I attempt to fetch the first

row.

 

My anecdotal experience with JDBC drivers in general are that they block when you attempt

to execute the query, not when you attempt to retrieve data.  Is this the case for the

Postgres driver?  Does anyone have a feel for how hard it would be to modify the driver

allow queries to be executed in the background?  Thanks!

 

Logan Bowers

 

Re: Non-blocking SQL Execution

От
Dave Cramer
Дата:
It's probably easier to create a non-blocking thread which encapsulates the driver

And yes, the postgres driver blocks on the execute.

Dave
On 31-Oct-05, at 7:06 PM, Logan Bowers wrote:

Hello,

 

(sorry if this comes through twice)

 

I'm running a web application that needs to run several queries against several databases

to satisfy a single request.  To minimize latency I'd like to be able to issue

"<PreparedStatement Object>.executeQuery()" on each connection, allow the servers to

execute the queries in parallel, and then only block when I attempt to fetch the first

row.

 

My anecdotal experience with JDBC drivers in general are that they block when you attempt

to execute the query, not when you attempt to retrieve data.  Is this the case for the

Postgres driver?  Does anyone have a feel for how hard it would be to modify the driver

allow queries to be executed in the background?  Thanks!

 

Logan Bowers

 



Re: Non-blocking SQL Execution

От
"Logan Bowers"
Дата:

Ah yes, I like this strategy, it will actually make things easier in my application for dealing with timeouts and such (since they can be handled in the thread).  Thanks! 

 

Logan Bowers

 


From: Dave Cramer [mailto:pg@fastcrypt.com]
Sent: Monday, October 31, 2005 4:50 PM
To: Logan Bowers
Cc: pgsql-jdbc@postgresql.org
Subject: Re: [JDBC] Non-blocking SQL Execution

 

It's probably easier to create a non-blocking thread which encapsulates the driver

 

And yes, the postgres driver blocks on the execute.

 

Dave

On 31-Oct-05, at 7:06 PM, Logan Bowers wrote:



Hello,

 

(sorry if this comes through twice)

 

I'm running a web application that needs to run several queries against several databases

to satisfy a single request.  To minimize latency I'd like to be able to issue

"<PreparedStatement Object>.executeQuery()" on each connection, allow the servers to

execute the queries in parallel, and then only block when I attempt to fetch the first

row.

 

My anecdotal experience with JDBC drivers in general are that they block when you attempt

to execute the query, not when you attempt to retrieve data.  Is this the case for the

Postgres driver?  Does anyone have a feel for how hard it would be to modify the driver

allow queries to be executed in the background?  Thanks!

 

Logan Bowers

 



 

Re: Non-blocking SQL Execution

От
Craig Servin
Дата:
If your using a 1.5 JDK a  java.util.concurrent.FutureTask is a nice way to do
this.





On Monday 31 October 2005 06:57 pm, Logan Bowers wrote:
> Ah yes, I like this strategy, it will actually make things easier in my
> application for dealing with timeouts and such (since they can be
> handled in the thread).  Thanks!
>
>
>
> Logan Bowers
>
>
>
> ________________________________
>
> From: Dave Cramer [mailto:pg@fastcrypt.com]
> Sent: Monday, October 31, 2005 4:50 PM
> To: Logan Bowers
> Cc: pgsql-jdbc@postgresql.org
> Subject: Re: [JDBC] Non-blocking SQL Execution
>
>
>
> It's probably easier to create a non-blocking thread which encapsulates
> the driver
>
>
>
> And yes, the postgres driver blocks on the execute.
>
>
>
> Dave
>
> On 31-Oct-05, at 7:06 PM, Logan Bowers wrote:
>
>
>
>
>
> Hello,
>
>
>
> (sorry if this comes through twice)
>
>
>
> I'm running a web application that needs to run several queries against
> several databases
>
> to satisfy a single request.  To minimize latency I'd like to be able to
> issue
>
> "<PreparedStatement Object>.executeQuery()" on each connection, allow
> the servers to
>
> execute the queries in parallel, and then only block when I attempt to
> fetch the first
>
> row.
>
>
>
> My anecdotal experience with JDBC drivers in general are that they block
> when you attempt
>
> to execute the query, not when you attempt to retrieve data.  Is this
> the case for the
>
> Postgres driver?  Does anyone have a feel for how hard it would be to
> modify the driver
>
> allow queries to be executed in the background?  Thanks!
>
>
>
> Logan Bowers