Re: Postgresql - Currval Vs Session Pool

From: Gustavo Amarilla Santacruz <gusamasan(at)gmail(dot)com>
To: Merlin Moncure <mmoncure(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Postgresql - Currval Vs Session Pool
Date: 2013-06-10 15:24:18
Message-ID: CAKc1ktUrDSC4yj4-OU=giVHOe+SG5R2wQJTR802__ai+T1kx_A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thank you, Merlin Moncure.

On Mon, Jun 10, 2013 at 10:13 AM, Merlin Moncure <mmoncure(at)gmail(dot)com> wrote:

> On Sun, Jun 9, 2013 at 10:59 AM, Gustavo Amarilla Santacruz
> <gusamasan(at)gmail(dot)com> wrote:
> > Hello, all.
> >
> > In the PostgreSQL documentation I found "currval: Return the value most
> > recently obtained by nextval for this sequence in the current session
> ...."
> >
> > In other documentations (pgpool, for example), I found "Connection
> Pooling
> > pgpool-II saves connections to the PostgreSQL servers, and reuse them
> > whenever a new connection with the same properties (i.e. username,
> database,
> > protocol version) comes in. It reduces connection overhead, and improves
> > system's overall throughput"
> >
> > Then, I have the following question: PostgreSQL differentiates between
> > sessions created for the same user?
>
> Connection pooling means you have to carefully consider using feature
> of the database that is scoped to the session. This includes
> currval(), prepared statements, listen/notify, advisory locks, 3rd
> party libraries that utilize backend private memory, etc.
>
> For currval(), one solution is to only use those features
> 'in-transaction', and make sure your pooler is fully transaction aware
> -- pgbouncer does this and I think (but I'm not sure) that pgpool does
> as well.
>
> Another solution is to stop using currval() and cache the value on the
> client side. postgres 8.2 RETURNING facilities this:
>
> INSERT INTO foo (...) RETURNING foo_id;
>
> This is a better way to deal with basis CRUD -- it also works for all
> default values, not just sequences. The only time I use currval() etc
> any more is inside server side functions.
>
> merlin
>

--
------------------------
Gustavo Amarilla

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Gustavo Amarilla Santacruz 2013-06-10 16:02:39 Re: Postgresql - Currval Vs Session Pool
Previous Message Gustavo Amarilla Santacruz 2013-06-10 15:24:04 Re: Postgresql - Currval Vs Session Pool