Search Postgresql Archives

Re: When is commited data available

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 26, 2011 at 9:33 AM, Fredric Fredricson
<Fredric.Fredricson@xxxxxxxxxxxxx> wrote:
> Hi,
> I wonder when the committed data is available to other connections, or more
> specifically if there is a delay after COMMIT return successfully and the
> data will appear in SELECTs made by other connections.
>
> A more detailed description of my problem:
>
> I use postgresql as backend to a REST service. The REST service is written
> php and run on an Apache server. For all reads I use a persistent connection
> (php function pg_pconnect()) and for all write operations I create a new
> connection for each call (php function pg_connect()).
> What I think I see now and then is that a client make a call to update the
> database and after the call has returned the client immediately (20-150ms
> delay) access the database again only to find that it looks like the update
> was never made. There are a lot of triggers involved and some have
> (intentional) side effects such as inserting into other tables and stuff.
> Later investigation reveals that the update was indeed made.
>
> Am I totally barking up the wrong tree here or could this happen? And if it
> can, is there a reliable work around that does not involve waiting X ms and
> hope for the best.
>
> These are the config variables that I assume may have something to do with
> it:
> #fsync = on
> #synchronous_commit = on
> #wal_sync_method = fsync
> #wal_writer_delay = 200ms
> #commit_delay = 0
> (all default values)
>
> Regards,
> Fredric
>
> PS. I realize this could be a caching problem in http but I have spent some
> time investigating this and I am pretty sure it is not.

There is no delay.  In fact, it is the lack of delay between commit
and constraint checking of data that is the principle advantage of
databases over the various nosql systems. You are almost certainly
leaking transaction due to the spectacularly broken mechanics of
pg_pconnect(), which is widely understood to be broken even by php
standards.  check out pgbouncer.

merlin

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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux