Re: Speedup truncations of temporary relation forks

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Daniil Davydov <3danissimo@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2025-05-31T00:48:52Z
Lists: pgsql-hackers
On Fri, May 30, 2025 at 06:01:16PM +0700, Daniil Davydov wrote:
> For now we fully scan local buffers for each fork of the temporary
> relation that we want to truncate (in order to drop its buffers). It
> happens in the function "DropRelationBuffers".
> There used to be the same problem for regular tables (i.e. shared
> buffers) and it was fixed in commit [1] and now shared buffers are
> scanned only one time for those three relation forks.
> I suggest making the same fix for temporary relations. See attached patch.

Applying the same kind of optimization for local buffers makes sense
here, even if the impact is more limited than regular relations.

> I understand that it will look kinda ugly, but it will increase
> performance for sure.

I guess it does.  Do you have numbers to share with a test case?

Please make sure to add this patch to the next commit fest.
--
Michael

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Speed up truncation of temporary relations.

  2. Speedup truncations of relation forks.