Re: Optimizing TransactionIdIsCurrentTransactionId() - Mailing list pgsql-hackers

From Robert Haas
Subject Re: Optimizing TransactionIdIsCurrentTransactionId()
Date
Msg-id CA+TgmoZttdAwKy22JSSdJuvu-qieZ-NW_ivqJXfRYCumMFc1Vg@mail.gmail.com
Whole thread Raw
In response to Optimizing TransactionIdIsCurrentTransactionId()  (Simon Riggs <simon@2ndquadrant.com>)
Responses Re: Optimizing TransactionIdIsCurrentTransactionId()  (Tomas Vondra <tomas.vondra@2ndquadrant.com>)
Re: Optimizing TransactionIdIsCurrentTransactionId()  (Simon Riggs <simon@2ndquadrant.com>)
List pgsql-hackers
On Wed, Dec 18, 2019 at 5:07 AM Simon Riggs <simon@2ndquadrant.com> wrote:
> TransactionIdIsCurrentTransactionId() doesn't seem to be well optimized for the case when an xid has not yet been
assigned,so for read only transactions.
 
>
> A patch for this is attached.

It might be an idea to first call TransactionIdIsNormal(xid), then
GetTopTransactionIdIfAny(), then TransactionIdIsNormal(topxid), so
that we don't bother with GetTopTransactionIdIfAny() when
!TransactionIdIsNormal(xid).

But it's also not clear to me whether this is actually a win. You're
dong an extra TransactionIdIsNormal() test to sometimes avoid a
GetTopTransactionIdIfAny() test. TransactionIdIsNormal() is pretty
cheap, but GetTopTransactionIdIfAny() isn't all that expensive either,
and adding more branches costs something.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



pgsql-hackers by date:

Previous
From: Juan José Santamaría Flecha
Date:
Subject: Re: Clean up some old cruft related to Windows
Next
From: Jeremy Schneider
Date:
Subject: Re: Proposal: Global Index