From: | Xuneng Zhou <xunengzhou(at)gmail(dot)com> |
---|---|
To: | pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Optimize SnapBuildPurgeOlderTxn: use in-place compaction instead of temporary array |
Date: | 2025-10-18 07:49:40 |
Message-ID: | CABPTF7V9gcpTLrOY0fG4YontoHjVg8YrbmiH4XB_5PT6K56xhg@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Hackers,
The SnapBuildPurgeOlderTxn function previously used a suboptimal
method to remove old XIDs from the committed.xip array. It allocated a
temporary workspace array, copied the surviving elements into it, and
then copied them back, incurring unnecessary memory allocation and
multiple data copies.
This patch refactors the logic to use a standard two-pointer, in-place
compaction algorithm. The new approach filters the array in a single
pass with no extra memory allocation, improving both CPU and memory
efficiency.
No behavioral changes are expected. This resolves a TODO comment
expecting a more efficient algorithm.
Best,
Xuneng
Attachment | Content-Type | Size |
---|---|---|
v1-0001-Optimize-SnapBuildPurgeOlderTxn-function.patch | application/octet-stream | 2.5 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Kirill Reshke | 2025-10-18 08:59:40 | Re: Optimize SnapBuildPurgeOlderTxn: use in-place compaction instead of temporary array |
Previous Message | Joel Jacobson | 2025-10-18 05:43:15 | Re: LISTEN/NOTIFY bug: VACUUM sets frozenxid past a xid in async queue |