From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Kevin Brown <kevin(at)sysexperts(dot)com> |
Cc: | pgsql-performance(at)postgresql(dot)org |
Subject: | Re: [SQL] Yet Another (Simple) Case of Index not used |
Date: | 2003-04-20 03:34:24 |
Message-ID: | 24735.1050809664@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-performance pgsql-sql |
Kevin Brown <kevin(at)sysexperts(dot)com> writes:
> Tom Lane wrote:
>> You missed the point of Josh's comment: in an MVCC system, the correct
>> COUNT() varies depending on which transaction is asking. Therefore it
>> is not possible for a centrally maintained row counter to give accurate
>> results to everybody, no matter how cheap it is to maintain.
> Hmm...true...but only if you really implement it as a faithful copy of
> the trigger-based method.
> [ instead have transactions save up net deltas to apply at commit ]
Good try, but it doesn't solve the problem. SERIALIZABLE transactions
should not see deltas applied by any transaction that commits after
they start. READ COMMITTED transactions can see such deltas --- but not
deltas applied since the start of their current statement. (And there
could be several different "current statements" with different snapshots
in progress in a single READ COMMITTED transaction.)
AFAICS, central-counter techniques could only work in an MVCC system
if each transaction copies every counter in the system at each snapshot
freeze point, in case it finds itself needing that counter value later
on. This is a huge amount of mostly-useless overhead, and it makes the
problem of lock contention for access to the counters several orders of
magnitude worse than you'd first think.
Of course you can dodge lots of this overhead if you're willing to
accept approximate answers. But I don't believe that central counters
are useful in an exact-MVCC-semantics system.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Joe Conway | 2003-04-20 04:30:03 | Re: stddev returns 0 when there is one row |
Previous Message | Kevin Brown | 2003-04-20 01:13:37 | Re: [SQL] Yet Another (Simple) Case of Index not used |
From | Date | Subject | |
---|---|---|---|
Next Message | Kevin Brown | 2003-04-20 06:28:52 | Re: [SQL] Yet Another (Simple) Case of Index not used |
Previous Message | Kevin Brown | 2003-04-20 01:13:37 | Re: [SQL] Yet Another (Simple) Case of Index not used |
From | Date | Subject | |
---|---|---|---|
Next Message | Kevin Brown | 2003-04-20 06:28:52 | Re: [SQL] Yet Another (Simple) Case of Index not used |
Previous Message | Kevin Brown | 2003-04-20 01:13:37 | Re: [SQL] Yet Another (Simple) Case of Index not used |