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 1vprY9-000GhZ-1E for pgsql-general@arkaria.postgresql.org; Tue, 10 Feb 2026 17:29:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vprX8-000DQR-0Q for pgsql-general@arkaria.postgresql.org; Tue, 10 Feb 2026 17:28:18 +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 1vprX7-000DQI-2P for pgsql-general@lists.postgresql.org; Tue, 10 Feb 2026 17:28:18 +0000 Received: from mail-oi1-x233.google.com ([2607:f8b0:4864:20::233]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vprX6-000000000xf-1TXc for pgsql-general@lists.postgresql.org; Tue, 10 Feb 2026 17:28:17 +0000 Received: by mail-oi1-x233.google.com with SMTP id 5614622812f47-45eabce608dso673382b6e.2 for ; Tue, 10 Feb 2026 09:28:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770744494; cv=none; d=google.com; s=arc-20240605; b=I9kwIqEcXSWiShXpwS8v6kvM0xj7S3YpnddSiUbNl66HlekwiDOr7sH0EivUkL4ri3 ELJDcJCvZMHdWWiYX0/+r64mzVblhooXv4OUiEwncraYU3Iaoqp2n50RYm0P8eQRGpKV ynmWoI3pQOpvL2W7vRGg8b7aemyuNT+tmm9BcKojkYOdsSKVxGLAosXWX7ywZAmGLhzR D2b2KwFyqtR7zpMO1yjKy52QyNqJMnuuQxaYo3tzlnB0mZmav4PW/7aeinjnSHdysOFy tZW6mpJQd7mvZHIna50tD+8vUxjTiIIlVQJclxf6gdv44s5qnQBxikYH+Wmp4gi8dkEU D7YA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=oYUyHMWFXSp4Ymoy9ZM6F2bNcM0QTAMWwuNbE3hQJ68=; fh=U9Vkrj/8YXu+wNKP4ImG87p6jlJYRxuB/zicT9qNons=; b=gDLwDsoi9kyZgYkOgWXY+/xOve4N7zx1v1+yDdaX7OqgmX9ofnKvVb6lc81LF5rH22 mm/zoeZX5tYVvczS0WRgr+ICcM/4HV3EjDs95CBaE6J50PSD02PZRCL/XaxTJgp+rFFj qM0IvwMaPZzdcN0G+GqgYoncbWamM7oLY3OZdcICwXk9CMYBfgaYIUVi3vdU6FMzOu9e ul0D5YZf52y8FdjBEmJdSpEOxRd6bleoGCmm0zlILieNvR4q6NyUuHcTozdrA3bsAEz4 8YE4qfJU8/rnN+ebFF8FW+YMSDpOlpNGfVt68PsNOqg1mXHsR14rrgExHtWQN0fR1EY/ mE5g==; 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=1770744494; x=1771349294; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=oYUyHMWFXSp4Ymoy9ZM6F2bNcM0QTAMWwuNbE3hQJ68=; b=DGBIghRKvEHE+ydu0mlZjlLnRkwrMrwKmBqgU4Ck94D1b8bcgUQqqrnn+vUScy1YJp 1gb1Sv4muhFGROq1yEClTe7esJtKiOTDT+eLN/DtTMkEJhENhjiIbnpRjaNbE/L+5An9 mkGMWZaA43ueaPdefCMTIR74k03dsAn0UOfw/qEEB8m/vs6rnTpiGAVmobCNLA2M1EfV +IQtjrOFGdxXiXepBp7CEZYvNdWG6LiKKXQV8RSTBr3I7yCoSNIw/yMkq1KDRasA6JL3 HHQWsrhMG2hZsgKSpCefTy/Z1JEUuYqtJO5bzHwDBsw+qgdrmrrsnXppVc7Zb7eDGnOI I6ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770744494; x=1771349294; h=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=oYUyHMWFXSp4Ymoy9ZM6F2bNcM0QTAMWwuNbE3hQJ68=; b=AuRXUdapR7GlOWAfa5Hrfd47a91MZy/E28Ni590IyPajHJu52o2wbmMFI1EQvdYyUA Wt9M7YvK12eCvd4yextSM+fko2gDDuEKwrWIZaeJAtCWSZU1OKCa83cLWx5XB5OzH9Lx 2tTsi16Gji3AupbqpwFwVThX2cnkHS9Mm/M8NEHs6uPHgzw8lKnXbpHxleO1VcOfawS/ G7orYLO1WQ1Js081q1PkYeu97PHenpJeSwjbuR/hOIgWq8rCHcgVyq/zJ9zcgRYFhRqS PLt+Mko5CBD592iR+DJjqvu8Ok5gCLYMvK82hDpNAVN2io6Z52T+ULzoFXA1ndUGWhg5 KHmA== X-Gm-Message-State: AOJu0YypWTopWGgHwwjXUtPS+/B7teSwxir+TAg3RbC5PkCHEe7Y3GWU DH01i3Rt299S2CwJ56z6gUWI7tbuOWrOevqWAkFX9b9h9hbmiAzxDYXbvY8urLpUXG4j28apPse A1rVVgBbs5bpe2Gdy2Qa6vLt4kdg1tEjfPGVp X-Gm-Gg: AZuq6aLE/WpoSbbKyUKdsG6IFHij14BwnnE9kUlhznUWIEFmyhjZUpVhwUi6l/nAxeB UiKO1b1Yyh4kSFO6BFCHrdGQvveKMomGKqXT8ImwpeqahCEGxR3I0e+KHrDfl5VkNOqysm76AlO e+RtSc7dGs8SOX3kHD1LTs1aeJFlKCyoazLNSmSDdJFmq+PzJ2o5joaiJHnBVYi+qRwKoHYnDTV 1LJbWnaX0wW1SqxN1aO7i+GRUv1S39ajmlo4qQMZCEYX33k6bV/OqRkynT8RmWEadgt6DwrLt/x 4nLpqm9F X-Received: by 2002:a05:6808:309a:b0:45e:e1f1:4af0 with SMTP id 5614622812f47-462fcbc86admr8794802b6e.63.1770744493899; Tue, 10 Feb 2026 09:28:13 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Ron Johnson Date: Tue, 10 Feb 2026 12:28:03 -0500 X-Gm-Features: AZwV_Qi3T-hhZ1elV1Z7FIUGH8-ADiB2lfvSCQKIi61F5FKjaQbKNry0vxTjCbw Message-ID: Subject: Re: Fillfactor effectiveness on existing table To: pgsql-general Content-Type: multipart/alternative; boundary="0000000000008c0ccc064a7b9461" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008c0ccc064a7b9461 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 c= ontriving 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? --=20 Death to , and butter sauce. Don't boil me, I'm still alive. lobster! --0000000000008c0ccc064a7b9461 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
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:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
Hi=C2=A0=

I added fillfactor with less = than 100 to existing table then ran vacuum full to take effect=C2=A0
<= div dir=3D"auto">
How to ensure the applied fill= factor is working successfully=C2=A0

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

<= /div>

While free space on the page is neces= sary 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.=C2=A0 A table with a single big= int 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 contrib extension that provides low-level de= tails.

What about=C2=A0pgstattuple.fr= ee_space and=C2=A0free_percent?

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