From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Peter Geoghegan <pg(at)bowt(dot)ie>, pgsql-hackers(at)postgresql(dot)org |
Cc: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | Re: pgsql: Delay commit status checks until freezing executes. |
Date: | 2023-01-04 00:54:33 |
Message-ID: | 20230104005433.k5aptjbqx75fksfm@awork3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
Hi,
On 2023-01-03 19:23:41 +0000, Peter Geoghegan wrote:
> Delay commit status checks until freezing executes.
>
> pg_xact lookups are relatively expensive. Move the xmin/xmax commit
> status checks from the point that freeze plans are prepared to the point
> that they're actually executed. Otherwise we'll repeat many commit
> status checks whenever multiple successive VACUUM operations scan the
> same pages and decide against freezing each time, which is a waste of
> cycles.
>
> Oversight in commit 1de58df4, which added page-level freezing.
>
> Author: Peter Geoghegan <pg(at)bowt(dot)ie>
> Discussion: https://postgr.es/m/CAH2-WzkZpe4K6qMfEt8H4qYJCKc2R7TPvKsBva7jc9w7iGXQSw@mail.gmail.com
There's some changes from TransactionIdDidCommit() to !TransactionIdDidAbort()
that don't look right to me. If the server crashed while xid X was
in-progress, TransactionIdDidCommit(X) will return false, but so will
TransactionIdDidAbort(X). So besides moving when the check happens you also
changed what's being checked in a more substantial way.
Also, why did you change when MarkBufferDirty() happens? Previously it
happened before we modify the page contents, now after. That's probably fine
(it's the order suggested in transam/README), but seems like a mighty subtle
thing to change at the same time as something unrelated, particularly without
even mentioning it?
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2023-01-04 00:54:55 | pgsql: Update obsolete multixact.c comments. |
Previous Message | Tom Lane | 2023-01-03 22:56:56 | pgsql: During pg_dump startup, acquire table locks in batches. |
From | Date | Subject | |
---|---|---|---|
Next Message | David Rowley | 2023-01-04 00:57:28 | Re: [PATCH] Improve ability to display optimizer analysis using OPTIMIZER_DEBUG |
Previous Message | Nathan Bossart | 2023-01-04 00:37:00 | Re: Common function for percent placeholder replacement |