Re: Update of table lags execution of statement by >1 minute?

From: Erik Peterson <epeterson(at)cardiomems(dot)com>
To: <pgsql-general(at)postgresql(dot)org>
Subject: Re: Update of table lags execution of statement by >1 minute?
Date: 2007-07-17 16:11:51
Message-ID: C2C26287.C73%epeterson@cardiomems.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

This happens in the same session. I have an application that had been
encountering this issue periodically, and I have rigged it to send me an
email whenever it happens. I¹ll get that email, fire up my client, and try
to update the row manually. Right after my update (autocommit is on, but it
makes no difference if I do a manual commit), I¹ll issue a select statement
on the same row, and it returns with the value from before the update. I¹ll
keep watching that row, and eventually it will show the right value in that
column. Once again, looking at the query logs, there are no conflicting
updates happening.

With your corrupted index theory, would simply rebuilding the index ³fix²
the issue? Is there any other way to diagnose if this is indeed the cause?

Thanks for your help,
Erik Peterson

On 7/17/07 10:54 AM, "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> "Erik Peterson" <epeterson(at)cardiomems(dot)com> writes:
>> > I'm having this issue where once or twice per day (out of ~100,000 =
>> > queries)
>> > the table doesn't reflect a committed update immediately. Usually when =
>> > this
>> > problem occurs the update takes 1-3 minutes to be reflected in SELECT
>> > queries. Occasionally, it has taken more than 10 minutes.
>
>> > The session could go something like this:
>
>> > UPDATE mytable SET myattribute=1 WHERE id=14;
>> > COMMIT;
>> > SELECT myattribute FROM mytable WHERE id=14;
>
>> > (Query returns myattribute with a value of 0)
>
>> > (Wait 5 minutes)
>> > SELECT myattribute FROM mytable WHERE id=14;
>
>> > (Query returns myattribute with a value of 1)
>
> To be blunt, I don't believe it. I can think of bugs by which a commit
> might be lost entirely, but there is no mechanism that would make it
> good five minutes later. I think you've misdiagnosed your problem
> somehow --- either you're not really committing where you think you are,
> or the observing query is using an old snapshot (maybe you are running
> it in a serializable transaction?)
>
> A somewhat more credible theory would revolve around corrupted indexes.
> If there's a corrupted index on "id" in the above example, a query might
> sometimes find one version of a row and sometimes find another; although
> any given search would be deterministic, apparently-unrelated changes in
> the index contents could change which one is found.
>
> Have you actually been able to reproduce a problem as sketched above in
> a single session --- ie, the update and the contradictory observations
> all done by the same backend? Or is this a representation of things
> that are happening in different sessions? What else is going on
> meanwhile?
>
> regards, tom lane
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message GPS Blaster 2007-07-17 16:46:42 shp2pgsql Help with sintax!
Previous Message Richard Huxton 2007-07-17 15:52:11 Re: int8 vs int4