pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Markus Schulz <msc@antzsystem.de>
To: pgsql-performance@postgresql.org, Heikki Linnakangas <hlinnakangas@vmware.com>
Subject: Re: BUG: endless lseek(.., SEEK_END) from select queries on x64 builds
Date: Fri, 22 Feb 2013 19:10:25 +0100
Message-ID: <201302221910.25271.msc@antzsystem.de> (raw)
In-Reply-To: <5127741D.6090907@vmware.com>
References: <201302220925.26460.msc@antzsystem.de>
	<5127741D.6090907@vmware.com>
List-Unsubscribe:  <mailto:majordomo@postgresql.org?body=unsub%20pgsql-performance>

Am Freitag, 22. Februar 2013, 14:35:25 schrieb Heikki Linnakangas:
> On 22.02.2013 10:25, Markus Schulz wrote:
> > i can run the query four times with good performance and after that
> > postgresql starts with the strange lseek() behavior.
> 
> By default, the JDBC driver re-plans the prepared statement for the
> first 4 invocations of the query. On the fifth invocation, it switches
> to using a generic plan, which will be reused on subsequent invocations.

that sounds really interesting and i would try to change my java-jdbc-test-cli 
program according to that, but ...

> See http://jdbc.postgresql.org/documentation/head/server-prepare.html.
> The generic plan seems to perform much worse in this case. You can
> disable that mechanism and force re-planning the query every time by
> setting the "prepareThreshold=0" parameter on the data source.

it wouldn't explain why the same jboss runs fine with a 32bit postgresql 
server (i switched only the datasource to another server with exactly the same 
database).

> You could check what the generic plan looks like by taking the query
> used in the java program, with the parameter markers, and running
> EXPLAIN on that.

how can i do this?
I've tried the following in my ejb-test-function to:

String query = "..."
entitymanager.createNativeQuery(query)...;
entitymanager.createNativeQuery("EXPLAIN ANALYZE " + query)...;

but the second createNativeQuery call runs fast every time and will show the 
same plan and the first hangs after the fourth call to this function.

> PostgreSQL version 9.2 might work better in this case. It has some
> smarts in the server to generate parameter-specific plans even when
> prepared statements are used, if the planner thinks a specific plan will
> be faster.

this wouldn't help:
> - Debian Wheezy 64bit with EnterpriseDB 9.2 64bit -> Bad behavior

we tried postgresql 9.2 too

> - Heikki

regards,
msc


-- 
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance



view thread (6+ messages)  latest in thread

Message-ID: <201302221910.25271.msc@antzsystem.de>
Permalink:  ../201302221910.25271.msc@antzsystem.de/
Also on:    postgresql.org/message-id/201302221910.25271.msc@antzsystem.de

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: msc@antzsystem.de, hlinnakangas@vmware.com
  Subject: Re: BUG: endless lseek(.., SEEK_END) from select queries on x64 builds
  In-Reply-To: <201302221910.25271.msc@antzsystem.de>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox