Re: Re: [HACKERS] [COMMITTERS] pgsql: Fix TransactionIdIsCurrentTransactionId() to use binary search - Mailing list pgsql-performance

From Tom Lane
Subject Re: Re: [HACKERS] [COMMITTERS] pgsql: Fix TransactionIdIsCurrentTransactionId() to use binary search
Date
Msg-id 11001.1209252029@sss.pgh.pa.us
Whole thread Raw
In response to Re: Re: [HACKERS] [COMMITTERS] pgsql: Fix TransactionIdIsCurrentTransactionId() to use binary search  (Robert Treat <xzilla@users.sourceforge.net>)
List pgsql-performance
Robert Treat <xzilla@users.sourceforge.net> writes:
> On Saturday 26 April 2008 13:26, Tom Lane wrote:
>> Oh, you failed to state that the dtrace output was post-patch.  You need
>> to show *pre* patch dtrace output if you want us to think it relevant.

> Please read up-thread.

Sorry, I'd forgotten your previous post.

I poked around for calls to TransactionIdIsCurrentTransactionId that
are in current code and weren't in 8.1.  I found these:

src/backend/commands/analyze.c: 965:                     if
(TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmin(targtuple.t_data)))
src/backend/commands/analyze.c: 984:                     if
(TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmax(targtuple.t_data)))
src/backend/commands/cluster.c: 803:                 if (!TransactionIdIsCurrentTransactionId(
src/backend/commands/cluster.c: 816:                 if (!TransactionIdIsCurrentTransactionId(
src/backend/storage/ipc/procarray.c: 374:     if (TransactionIdIsCurrentTransactionId(xid))
src/backend/utils/time/combocid.c: 108:     Assert(TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmin(tup)));
src/backend/utils/time/combocid.c: 123:     Assert(TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmax(tup)));
src/backend/utils/time/combocid.c: 156:         TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmin(tup)))

The ANALYZE and CLUSTER calls are not likely to be your issue, but the
one in HeapTupleHeaderAdjustCmax could get called a lot, and the one
in TransactionIdIsInProgress definitely will get called a lot.
Neither of those calls existed in 8.2.

So I think that explains why TransactionIdIsCurrentTransactionId has
become more performance-critical in 8.3 than it was before.  Will
apply the back-patch.

            regards, tom lane

pgsql-performance by date:

Previous
From: Craig Ringer
Date:
Subject: Re: Best practice to load a huge table from ORACLE to PG
Next
From: "Jonah H. Harris"
Date:
Subject: Re: Best practice to load a huge table from ORACLE to PG