Re: [PERFORM] [JDBC] does prepareThreshold work? forced to use old driver

2007-02-26 Thread Kris Jurka



On Mon, 26 Feb 2007, Gene wrote:


I've been having some serious performance issues with
postgresql8.2/hibernate/jdbc due to postgres reusing bad cached query
plans. It doesn't look at the parameter values and therefore does not
use any partial indexes.

After trying to set prepareThreshold=0 in the connection string which
didnt work, even modifying the jdbc driver and forcing it to 0 and not
working I realized that it must be being ignored. After giving up
pretty much I tried a much older driver which doesn't use server
prepared statements at all the problem has gone away and it is once
again using the partial indexes. How can I get this to work properly
on the new jdbc driver? I don't really like having to use a 2 year old
driver to get good performance as you can imagine :)


Something must be going wrong in the setting to zero or your code may be 
setting it to non-zero at some later point.  I believe prepareThreshold=0 
should work.  Do you have a test case showing it doesn't?


Kris Jurka


---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

   http://www.postgresql.org/about/donate


Re: [PERFORM] [JDBC] does prepareThreshold work? forced to use old driver

2007-02-26 Thread Dave Cramer


On 26-Feb-07, at 11:12 AM, Gene wrote:


hi!

I've been having some serious performance issues with
postgresql8.2/hibernate/jdbc due to postgres reusing bad cached query
plans. It doesn't look at the parameter values and therefore does not
use any partial indexes.

After trying to set prepareThreshold=0 in the connection string which
didnt work, even modifying the jdbc driver and forcing it to 0 and not
working I realized that it must be being ignored. After giving up
pretty much I tried a much older driver which doesn't use server
prepared statements at all the problem has gone away and it is once
again using the partial indexes. How can I get this to work properly
on the new jdbc driver? I don't really like having to use a 2 year old
driver to get good performance as you can imagine :)

Could someone point me to a jdbc src file where I could just disable
server-side prepared statements entirely?

you can just add protocolVersion=2 to the url and it will not use  
prepared statements.


setting prepareThreshold=0 just tells it not to use named statements.  
It will still use statements but won't cache them.


Are you sure the problem is with cached statements ? There are issues  
where prepared statements won't use the index if you don't use the  
correct type.


Dave

--
thanks, G

---(end of  
broadcast)---

TIP 3: Have you checked our extensive FAQ?

  http://www.postgresql.org/docs/faq




---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [PERFORM] [JDBC] does prepareThreshold work? forced to use old driver

2007-02-26 Thread Gene

Thank you! setting the protocolVersion=2 works with the newer driver.
I'm still puzzled as to why the prepareThreshold=0 doesn't force the
replan though.

On 2/26/07, Dave Cramer [EMAIL PROTECTED] wrote:


On 26-Feb-07, at 11:12 AM, Gene wrote:

 hi!

 I've been having some serious performance issues with
 postgresql8.2/hibernate/jdbc due to postgres reusing bad cached query
 plans. It doesn't look at the parameter values and therefore does not
 use any partial indexes.

 After trying to set prepareThreshold=0 in the connection string which
 didnt work, even modifying the jdbc driver and forcing it to 0 and not
 working I realized that it must be being ignored. After giving up
 pretty much I tried a much older driver which doesn't use server
 prepared statements at all the problem has gone away and it is once
 again using the partial indexes. How can I get this to work properly
 on the new jdbc driver? I don't really like having to use a 2 year old
 driver to get good performance as you can imagine :)

 Could someone point me to a jdbc src file where I could just disable
 server-side prepared statements entirely?

you can just add protocolVersion=2 to the url and it will not use
prepared statements.

setting prepareThreshold=0 just tells it not to use named statements.
It will still use statements but won't cache them.

Are you sure the problem is with cached statements ? There are issues
where prepared statements won't use the index if you don't use the
correct type.

Dave
 --
 thanks, G

 ---(end of
 broadcast)---
 TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq






--
Gene Hart
cell: 443-604-2679

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

  http://www.postgresql.org/docs/faq