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 1vpqEm-00HDCy-0d for pgsql-general@arkaria.postgresql.org; Tue, 10 Feb 2026 16:05:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vpqEk-00G5HR-3A for pgsql-general@arkaria.postgresql.org; Tue, 10 Feb 2026 16:05:14 +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 1vpqEk-00G5HI-25 for pgsql-general@lists.postgresql.org; Tue, 10 Feb 2026 16:05:14 +0000 Received: from mail-oo1-xc30.google.com ([2607:f8b0:4864:20::c30]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vpqEi-000000000JK-281Q for pgsql-general@lists.postgresql.org; Tue, 10 Feb 2026 16:05:14 +0000 Received: by mail-oo1-xc30.google.com with SMTP id 006d021491bc7-6740e0bd21bso12589eaf.1 for ; Tue, 10 Feb 2026 08:05:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770739508; cv=none; d=google.com; s=arc-20240605; b=GJknANXHnH5/O75ukbYfhhM4ataRjWDn7F3hhQEpxtKcxacOyPhWOPcq4ebJpz/eHj DsCpoz1KAPrsoQzPkjDSaaxPpN75L0gPLE2V0o0cI/Jj8Ct5XWcFkzyKLQ3LIJutp7vJ uimRF6cD1MEceFSbquEp181liJdggFWwqpQi0TJxElYPhW5vJefG3aGmGJSwjiq+nRrU 0b2D2asDHbbWkTX1OpRNra+kxnHoKkVN9d3+mNTbftGT1IKy8urrEpioIIzYW/lzd898 MTrHSCV01dY1b7wxsIVdz/xrEiAEkffkkkuz/eiMOcns5Vsd1aCpdgYkFhL6Xz209rfX Ea8g== 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:references:in-reply-to :mime-version:dkim-signature; bh=Vb27at9svkB3/vf67uBSRG23BGcqZTX9D8lxmkgyFaw=; fh=896RIOnat1xZkO/70p2DEH4n7c/DHfSjM2pkXW7TWgM=; b=JzLhLUNoIPm+PqiX4IGOCv4WWo0B7HeeWsb9y+yivj9CO/Pm0p8A6R7ZzQwOnzOyof LuozMuangLqvouFQ1bEpIAqpycknbdyYWvymTbpMdeKSzYX6lAjC6EZHfxgl0cXaj+hV dCOAraBQcsonFrQV/+Oo3iBS/nP9J2HTK3imI3xfX7/Wtx5ltMEzOD7y/Iqz/osMGp4w PNLUO8CVC5X72A2bNvVyJF+14T3sdsm6Pgcb8phwYlFl3NTWLCgppt7WkHlMlgUgFESL W8h+ec0pW8LP2Y63YtN6Llx74UHc+rI/b+IDNv0YDWEdef24rYwQ5SLEQnIkqFyhDpad v6hw==; 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=1770739508; x=1771344308; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:references:in-reply-to :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Vb27at9svkB3/vf67uBSRG23BGcqZTX9D8lxmkgyFaw=; b=hqiwzR1FTnIw9vsSr2xbBPOwnyDIJctZnsP84eZnAjnQYkgR+2Uuil0fNaaF0Kv1tM HlA5sB0cNz5pTd4vm8vKBzQsiKzSpoT/ymAQYoigztctnoZTeotW5lUlJyjn8BXDG9Yi 9jtU5UKuwfp6WDvDeKYoYbSrCniSmHuZTXaqbX8JqRkSSjn7e4WlKpp+NBBhea1mkiWP REt99YXdMMllQolfZ8ifyo/bJh0nRTVRh38UYEy8xD83b2yK5h6Vsmdx1yC7F8RidI/a 7WtYIfMMD9RiSbpmA3SSEQVq2dBRl/dy442bAeoZqq5qjLAj2/i7zysAASdfS6aSXQkA /aow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770739508; x=1771344308; h=cc:to:subject:message-id:date:from:references:in-reply-to :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Vb27at9svkB3/vf67uBSRG23BGcqZTX9D8lxmkgyFaw=; b=NK847xdcAljIIidQRmZUKHN3P6t3qQylPYTeUYKOFTSrszGi9l1XnBjrSeqzxWt4Su 0TcFfiHAEtHbepngIhJTYbeg860VeA9VXDutTdCat7l83KqwYnpRuATQ8VJSRjTUEre3 ajrjrW31RtjP6O3s+vNG0uRSx2NTQBTDW8m7YkXpNu7rzFaUfJFlm411ICgmGskke1bH UZlzwZfF5sWUC9/DamyBiJ61NqRYMSALdb07p7lvfivSInw5pakFGsE19qxaZpjP2L91 ipWcZ8ibhkrw58cHREZrToeQdKJEKZTaEkFvYi1baOuASRxt0DGZGHIjX/TYF7YC93aU 9w/Q== X-Gm-Message-State: AOJu0YxsbEuVGHerPImEgeB8ao+44b9mEVoissORqbKzw31lDjOY+1D2 GqIng77/bHyXDxEXJNyxAD9kcBBvt/HoVS8ZbJqUNPYjsUsu6YhOHuXLcm8JsqGFNB271CVUOra JqqvqxVXXdR5gKkHedg0DxLM26ch6wUM= X-Gm-Gg: AZuq6aKqER3OKHo66EMLKhpL/ViGPn2IV/+B4D2oEFrUT0rpOBFisLRkDAlKIoTz90U sA8AfaNvJyWI7hkL3CaYvRtuMcjRuj+ZvhqPKVpMB14FTZ9iY9GaPYZoaocbMNte/xy1csgn99s QkXUHc9q/VpAkkzoMeqgTEIFP2YQ/3+I1Tw2PpiqMv1LN/k+NaXb/nU3EDCTSwwGszMPEtBqGMx Y/G0Mi5ao0IRgTb3Y+hHHh37yrHv9+eGMjtB0IDkLV3uV3BWo1NqmhTWyl+BbK62xBikNBm3Jk7 /IzX2uk= X-Received: by 2002:a05:6820:138e:b0:65f:1012:69c5 with SMTP id 006d021491bc7-66d35985864mr6014960eaf.76.1770739507688; Tue, 10 Feb 2026 08:05:07 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a8a:294:0:b0:61e:2744:d741 with HTTP; Tue, 10 Feb 2026 08:05:06 -0800 (PST) In-Reply-To: References: From: "David G. Johnston" Date: Tue, 10 Feb 2026 08:05:06 -0800 X-Gm-Features: AZwV_Qjl14qTYrTvQOkS2DdP-ZmKYJH1Ux-ZU3limFkcrAPb0KCktn4w9JyR7RY Message-ID: Subject: Re: Fillfactor effectiveness on existing table To: Durgamahesh Manne Cc: pgsql-general Content-Type: multipart/alternative; boundary="0000000000005879af064a7a6bfa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005879af064a7a6bfa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tuesday, February 10, 2026, Durgamahesh Manne 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 con= triving 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. David J. --0000000000005879af064a7a6bfa Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tuesday, February 10, 2026, Durgamahesh Manne <maheshpostgres9@gmail.com> wrote:
Hi=C2=A0

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

How to ensure the applied fillfactor is working successf= ully=C2=A0

A ratio of ho= t 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 su= fficient.

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.=C2=A0 A table with a single bigint and say 50 fillfacto= r 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-i= nspect contrib extension that provides low-level details.

David J.

--0000000000005879af064a7a6bfa--