Re: Fillfactor effectiveness on existing table - Mailing list pgsql-general

From Ron Johnson
Subject Re: Fillfactor effectiveness on existing table
Date
Msg-id CANzqJaD_DifAmHS4B2JQH5ZLZ07J5nkLoNtLp9_jZD7Gk4zBXA@mail.gmail.com
Whole thread
In response to Re: Fillfactor effectiveness on existing table  (Durgamahesh Manne <maheshpostgres9@gmail.com>)
Responses Re: Fillfactor effectiveness on existing table
List pgsql-general
On Tue, Feb 10, 2026 at 9:34 PM Durgamahesh Manne <maheshpostgres9@gmail.com> wrote:


On Tue, 10 Feb, 2026, 22:58 Ron Johnson, <ronljohnsonjr@gmail.com> wrote:
On Tue, Feb 10, 2026 at 11:05 AM David G. Johnston <david.g.johnston@gmail.com> wrote:
On Tuesday, February 10, 2026, Durgamahesh Manne <maheshpostgres9@gmail.com> wrote:
Hi 

I added fillfactor with less than 100 to existing table then ran vacuum full to take effect 

How to ensure the applied fillfactor is working successfully 

A ratio of hot updates in catalog table should higher than value of n_dead_tup or n_tup_upd? Or what ?


While free space on the page is necessary for HOT, it is not sufficient.

If you want to prove fillfactor isn’t buggy I’d suggest contriving a test case instead inspecting complex real data.  A table with a single bigint and say 50 fillfactor should be easily visible when inspecting the free space of a page in the heap (not sure of the exact query for this though).  There is a page-inspect contrib extension that provides low-level details.

What about pgstattuple.free_space and free_percent? 
Hi @Ron 
approx_free_space | 13227478672 approx_free_percent | 30.89065723142561

Free space can be considered as bloat for non toast table but not for both toast and non toast I believe 

1) Did you vacuum?
2) What's the fillfactor?

--
Death to <Redacted>, and butter sauce.
Don't boil me, I'm still alive.
<Redacted> lobster!

pgsql-general by date:

Previous
From: Durgamahesh Manne
Date:
Subject: Re: Table bloat threshold limit to trigger repack
Next
From: Durgamahesh Manne
Date:
Subject: Re: Fillfactor effectiveness on existing table