Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vq03X-002XaM-1P for pgsql-general@arkaria.postgresql.org; Wed, 11 Feb 2026 02:34:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vq03W-001v7z-1Z for pgsql-general@arkaria.postgresql.org; Wed, 11 Feb 2026 02:34:19 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vq03W-001v7p-0K for pgsql-general@lists.postgresql.org; Wed, 11 Feb 2026 02:34:18 +0000 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vq03U-0000000056a-436p for pgsql-general@lists.postgresql.org; Wed, 11 Feb 2026 02:34:18 +0000 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-65a414a6859so132676a12.1 for ; Tue, 10 Feb 2026 18:34:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770777255; cv=none; d=google.com; s=arc-20240605; b=WWBpQ101SVE2oq4E4BpWcztQrvgB0d0bObARIBdIL0kjGA7uWlCSwddpyQNiEX428/ XY23T5CInWZfcFTzclpFrtK8AebOzcvFf5QMlZZiuSaCw9qmtphtAeAEa9Uwev/DwKQ1 pGwbSzqjB2aGg1SuTMLBiIJNx78mzVNXTK4iShOtFUK46ZoR42NY+usrPLDDVHayfel/ A8lLiM1z046ODFJVi2R0MMY7w2igC8zw11xU4MUISrBUmEfVqTur85xxImOf8WaVxaHd c5/wkOxNMgPBdQ5E2gznOfehJdUofk2OqBxyiCba4olXmlOpFhk8aJAGq4LO+8uumuep BjSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=i3eq4CaR3JP3hD5m1wzW1zxlcFHFIWg5NvKZoRhz+94=; fh=1i3EzMI3/SJAmYjq3gFfFgSsMFbOij3SgU3G87zzXTI=; b=ZSuYbidcN4hMoYJNkbJRbe0lrHz8WNMXrlBov82egy8ySDNxUJvtRUaLnnhp0ug6XP 0cJT23zDUOAxxwNvSxmFcNUDJ4wasJ9AMaybDV9j01dNyRR8tfJm+rkkPavQpaqagU9c naEOKsvr8Eh6jzpX48H6dsiLwTfDf3Gl1OfW9+HOkB4VGW8Nh/VxqKs6jvdIrJGqwLIk QBW99iV0g2EuLOtaFS5Dofbb++wjCyLW0vTq8aj3xO66c3dSzai0khhH46HKpsLPeTmb y5elcpnp3U4ZzU3DccsCibR25BfkxSln7KFnA9A6Oqjvu6HZ7DwhZ90Wcx3kZ3koToT1 QV1w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770777255; x=1771382055; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=i3eq4CaR3JP3hD5m1wzW1zxlcFHFIWg5NvKZoRhz+94=; b=EkuGR9eerLmFbQjgPpAYEKDysQXJ9k88EFwKHiRIAavN2heXHQGtnWQ8gB7ypjOn33 zpAXpahKalmoNa7QI5HH9efR34ieejninyKPBP7OUcv030lVbqPu+dbaMnV0+tZhOYfi 1lHOikGhM1F6BDyovo0UqWAjbVLfLEztnSlGYCmfl6nDJ6TIoV4RsjE7ecoTTey4ADg9 +I+IzhGdvPWbhg+Q5xxAW5e+3xz26PcZCibVniEs4c8FQec+cA0rsdvlw5mtStBWqGV0 Y8UEDC/qINAoRJNgIAJEkAaVowICGL9KyUm/h1giCmbWJ4sol+JcfqqKCUQrzYj5ge7e 4uvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770777255; x=1771382055; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=i3eq4CaR3JP3hD5m1wzW1zxlcFHFIWg5NvKZoRhz+94=; b=KQo8LjUKWmFftUU7i7YGK0HaptvIXCOHPkTZnolC7LvgozRDVWMOX57rko9yJS+OX6 LzIdC5a2vdl6FYa4ryKnnnqSoedB3vBWo50dv89/AnnLUh0l0hvX6ad11Mnke5RyQaak X2DG7+8J1xsx4PbHRbkY7IHwGKNogAC1fimWfXMvX2tE24yYUURpFDxagmgwZeZlWkoQ mOqQpdC1qQ7z9f+VKZvGS4OrUpnu60ZPP0pTmGpsxO1IBKFf42c5Al/8AIIN4LZAFBte RNAZAE+bU8gwxG1DS69ZTM/3AxjanK7xudxH1e/ps6DMjyyMZVJgewZ7X/nUcH3c2QqS Ge6A== X-Gm-Message-State: AOJu0YxV/wOvQ1TOtSj2pms3GOZ3pfavbnVQi/QrrK3bB/pufCQugoqF 1DPvZNA/lG2U2ae6O05Wlep/d7/5ZVJp6pASQp1SYQAnQrcng8Eucik8U+97/DsUnD474XBc6ov 9IzwNeWTcSe+4A/FNlQwXijRCA5iFoSPagQ== X-Gm-Gg: AZuq6aLoXnQ5wgsF4itJV6sLYfZwiGZPpL18ONP9QNkknZZXRmZUzXXTBFVrX7/BBjw PkWnXKSTCERnmy7avyWnXFuXAG/HsZI05jZVyQJiPTYWG1jR325JpVkYTYzCKaZ+qMwWiSqt+sC rfH95JSj7IPGhqeST0Muvv/bxWh2aIDxt0V69SOcjLywVyyiBFnTiaieqtzrbfpT0X30OLOZsua gecjl0jxAA8lNOyHQP747z3kFDM733iWT8E5x/ipC6uUITLswbsbssq4cQGu6ZO3WC3s3uJv1GR +rxzKkPug00bOI0rGoyt1i3/oMyZolWuHc3QGj4= X-Received: by 2002:a17:907:3d16:b0:b88:510a:59b3 with SMTP id a640c23a62f3a-b8edf40a6a6mr1008645466b.48.1770777254502; Tue, 10 Feb 2026 18:34:14 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Durgamahesh Manne Date: Wed, 11 Feb 2026 08:04:02 +0530 X-Gm-Features: AZwV_QgqQKI_fK-CmAQabpSxjXhtunbyfz5yq54ao1pXYOlGWunoJxkLSqQRAp0 Message-ID: Subject: Re: Fillfactor effectiveness on existing table To: Ron Johnson Cc: pgsql-general Content-Type: multipart/alternative; boundary="0000000000003b244a064a83355b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003b244a064a83355b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 10 Feb, 2026, 22:58 Ron Johnson, wrote: > On Tue, Feb 10, 2026 at 11:05=E2=80=AFAM 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=E2=80=99t buggy I=E2=80=99d 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 detail= s. >> > > What about pgstattuple.free_space and free_percent? > > -- > Death to , and butter sauce. > Don't boil me, I'm still alive. > lobster! > 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 Regards Durga Mahesh > --0000000000003b244a064a83355b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Tue, 10 Feb, 2026, 22:58 Ron = Johnson, <ronljohnsonjr@gmail= .com> wrote:
On Tue, Feb 10, 2026 at 11:05=E2=80= =AFAM David G. Johnston <david.g.johnston@gmail.com> wrot= e:
On Tuesday, February 10, 2026, Durgamahesh Manne <mahe= shpostgres9@gmail.com> wrote:
Hi=C2=A0

I added fillfactor with less than 100 to existing table then ra= n vacuum full to take effect=C2=A0

How to ensure the applied fillfactor is working successfully=C2= =A0

A ratio of hot updat= es 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 sufficien= t.

If you want to prove fillfactor isn=E2=80=99t b= uggy I=E2=80=99d suggest contriving a test case instead inspecting complex = real data.=C2=A0 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).=C2=A0 There is a page-inspect co= ntrib extension that provides low-level details.
What about=C2=A0pgstattuple.free_space and=C2=A0free_percent?

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

Hi @Ron=C2=A0
approx_free_space | 13227478672 approx_free_percent | 30.89= 065723142561

Free space can be considered as bloat for non toast table b= ut not for both toast and non toast I believe=C2=A0


Regards=C2=A0
Durga= Mahesh=C2=A0
--0000000000003b244a064a83355b--