Re: Compress prune/freeze records with Delta Frame of Reference algorithm

From: Evgeny Voropaev <evgeny(dot)voropaev(at)tantorlabs(dot)com>
To: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Andrey Borodin <x4mmm(at)yandex-team(dot)ru>
Subject: Re: Compress prune/freeze records with Delta Frame of Reference algorithm
Date: 2026-04-21 05:41:25
Message-ID: 380a9035-54e3-4ee2-bdde-fe7526c34b6a@tantorlabs.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello hackers,

> Can this DFoR code replace integerset.c easily? Can we use it for
> the vacuum dead TID list? For GIN posting lists? Where else?

Heikki, thank you for your attention and proposals. I'm learning areas
you proposed to be developed. This took time, since I am not adept at
them. Last week I also have been developing the DFoR patch to support
unsorted sequences. That's why there was the delay in answering.

About GIN.
Since GIN exploits TIDs sequences and saves it on the disk, it can be
the most appropriate candidate to be developed with DFoR.

About the dead TID list.
If I'm not mistaken, the dead TID list exists only in RAM and never on
the disk or in the network. So, what is the advantage supposed to be
achieved due to using compression in the dead TID list?

About the GiST vacuuming and the use of integerset in it.
The integerset implements a tree in addition to compression.
DFoR now performs only compression. Moreover the size of a pack is
flexible (varying), which must become an issue for its usage in the
tree. It needs more thorough further elaboration to be developed.

So what do you think about improving GIN by means of DFOR? Should I try?

Best regards,
Evgeny Voropaev,
Tantor Labs, LLC.

P.S.
In the v12 version of the patch:
- implemented the DFOR compression for unsorted sequences;
- implemented the compression of frozen and redirected tuple offsets
in the prune/freeze WAL record
- ignored header checking of header templates from DFOR file set;
- rebased onto 9b43e6793b0.

Attachment Content-Type Size
v12-0001-Implement-vect-and-uniqsortvect-containers-and-b.patch text/x-patch 27.3 KB
v12-0002-Tests-of-vect-and-uniqsortvect-containers-and-of.patch text/x-patch 69.2 KB
v12-0003-Implement-Delta-Frame-of-Reference-compression.patch text/x-patch 31.0 KB
v12-0004-Tests-for-Delta-Frame-of-Reference-unit.patch text/x-patch 23.4 KB
v12-0005-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.patch text/x-patch 41.1 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Fujii Masao 2026-04-21 05:42:38 Re: [PATCH] Prevent repeated deadlock-check signals in standby buffer pin waits
Previous Message Yuchen Li 2026-04-21 05:40:41 Re: [PATCH] Fix duplicate errmsg in ALTER TABLE SPLIT PARTITION