| 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: | Whole Thread | Raw Message | 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
| 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 |