Re: [PERFORM] [JDBC] does prepareThreshold work? forced to use old driver
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
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
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