pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: ktm@rice.edu <ktm@rice.edu>
To: Rafael Martinez <r.m.guerrero@usit.uio.no>
Cc: pgsql-performance@postgresql.org
Subject: Re: DBD-Pg prepared statement versus plain execution
Date: Wed, 21 Mar 2012 07:59:30 -0500
Message-ID: <20120321125930.GA7440@aart.rice.edu> (raw)
In-Reply-To: <4F69B9B3.7030303@usit.uio.no>
References: <4F69B9B3.7030303@usit.uio.no>

Hi Rafael,

Try disabling the prepare statement processing in DBD::Pg and
try the timing runs again.

Regards,
Ken

On Wed, Mar 21, 2012 at 12:21:23PM +0100, Rafael Martinez wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hello
> 
> We are having some performance problems with an application that uses
> prepared statement heavily.
> 
> We have found out that it creates-executes-destroys a prepared statement
> *per* statement it sends to the database (pg-9.1) via DBD-Pg.
> 
> A normal log entry for a sql-statement looks e.g. like this:
> - ----------------------------------------------------------
> [2012-03-15 14:49:12.484 CET]  LOG:  duration: 8.440 ms  parse
> dbdpg_p32048_3:
> 
> SELECT DISTINCT ACL.RightName FROM ACL, Principals, CachedGroupMembers
> WHERE Principals.id = ACL.PrincipalId AND Principals.PrincipalType =
> 'Group' AND Principals.Disabled = 0 AND CachedGroupMembers.GroupId  =
> ACL.PrincipalId AND CachedGroupMembers.GroupId  = Principals.id AND
> CachedGroupMembers.MemberId = 19312 AND CachedGroupMembers.Disabled = 0
>  AND ((ACL.ObjectType = 'RT::System' AND ACL.ObjectId = 1) OR
> (ACL.ObjectType = 'RT::System' AND ACL.ObjectId = 1))
> 
> [2012-03-15 14:49:12.485 CET]  LOG:  duration: 0.087 ms  bind
> dbdpg_p32048_3:
> 
> SELECT DISTINCT ACL.RightName FROM ACL, Principals, CachedGroupMembers
> WHERE Principals.id = ACL.PrincipalId AND Principals.PrincipalType =
> 'Group' AND Principals.Disabled = 0 AND CachedGroupMembers.GroupId  =
> ACL.PrincipalId AND CachedGroupMembers.GroupId  = Principals.id AND
> CachedGroupMembers.MemberId = 19312 AND CachedGroupMembers.Disabled = 0
>  AND ((ACL.ObjectType = 'RT::System' AND ACL.ObjectId = 1) OR
> (ACL.ObjectType = 'RT::System' AND ACL.ObjectId = 1))
> 
> 
> [2012-03-15 14:49:12.487 CET] LOG:  duration: 1.692 ms  execute
> dbdpg_p32048_3:
> 
> SELECT DISTINCT ACL.RightName FROM ACL, Principals, CachedGroupMembers
> WHERE Principals.id = ACL.PrincipalId AND Principals.PrincipalType =
> 'Group' AND Principals.Disabled = 0 AND CachedGroupMembers.GroupId  =
> ACL.PrincipalId AND CachedGroupMembers.GroupId  = Principals.id AND
> CachedGroupMembers.MemberId = 19312 AND CachedGroupMembers.Disabled = 0
>  AND ((ACL.ObjectType = 'RT::System' AND ACL.ObjectId = 1) OR
> (ACL.ObjectType = 'RT::System' AND ACL.ObjectId = 1))
> 
> 
> [2012-03-15 14:49:12.488 CET] LOG:  duration: 0.029 ms  statement:
> DEALLOCATE dbdpg_p32048_3
> - ----------------------------------------------------------
> 
> As you can see, the parse+bind+deallocate part uses much more time than
> the execution part. This is the same for many of the statements send to
> the database.
> 
> My question is:
> 
> Is the parse+bind time reported, a time (not reported) that the planer
> will use anyway when running a sql-statement in a normal way or the
> parse+bind+deallocate time is *extra* time needed by the prepared statement?
> 
> Can we assume that running this application without using prepared
> statements will do that it runs faster the time used by
> parse+bind+deallocate?
> 
> Thanks in advance.
> 
> regards,
> - -- 
>  Rafael Martinez Guerrero
>  Center for Information Technology
>  University of Oslo, Norway
> 
>  PGP Public Key: http://folk.uio.no/rafael/
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> 
> iEYEARECAAYFAk9pubAACgkQBhuKQurGihTYkwCcCFYQRDGWD0yaR+f2FFwKs7gN
> RfgAoJdPrAzUhfBfsXmst7/l7LVLisHy
> =l7Fl
> -----END PGP SIGNATURE-----
> 
> -- 
> 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 (3+ messages)  latest in thread

Message-ID: <20120321125930.GA7440@aart.rice.edu>
Permalink:  ../20120321125930.GA7440@aart.rice.edu/
Also on:    postgresql.org/message-id/20120321125930.GA7440@aart.rice.edu

 · 

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: ktm@rice.edu, r.m.guerrero@usit.uio.no
  Subject: Re: DBD-Pg prepared statement versus plain execution
  In-Reply-To: <20120321125930.GA7440@aart.rice.edu>

* 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