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 1vq0V8-002eUu-23 for pgsql-general@arkaria.postgresql.org; Wed, 11 Feb 2026 03:02:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vq0V7-00236r-3D for pgsql-general@arkaria.postgresql.org; Wed, 11 Feb 2026 03:02:50 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vq0V7-00236i-1k for pgsql-general@lists.postgresql.org; Wed, 11 Feb 2026 03:02:50 +0000 Received: from mail-oo1-xc2e.google.com ([2607:f8b0:4864:20::c2e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vq0V5-000000003nt-3Aea for pgsql-general@lists.postgresql.org; Wed, 11 Feb 2026 03:02:49 +0000 Received: by mail-oo1-xc2e.google.com with SMTP id 006d021491bc7-662f9aeb765so1875630eaf.3 for ; Tue, 10 Feb 2026 19:02:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770778968; cv=none; d=google.com; s=arc-20240605; b=czpRqMZETsqM/Ar4fUyiVzDnzxiMjXa1TP5N9+z4Et6+dBR4H7AX8eUNDyrPI8Axnj nU2wZaGeDxjKT8cse5qtkrr3j4HH4Zt14PMd/oLJcq6sD7uvIJvF/nUYIo0Ou+crVu0L GWjyaE483nLzsNw6nEBDw7zy6Ww6pjm7VOtN/Y9h5+kPUSe7V9AO8jnQCbc+Z+PlQNLd JInDSnNE6LBeaNP84DKmkAWlNhAfEVh88/xA6+I4x45qNLq2dyu+rsJuqdrxdYjQ4imm FlbImgOF6IC0cTUxLGO/dAyBVVXd2J6FurLZQGHCvfB4ZNqo/njoz5zXv8a/5SKv5gDC /aFg== 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=+B1UZjr3/D+dFvrvkcJtkgBplav/sgJr+K0++bZTvbY=; fh=U9Vkrj/8YXu+wNKP4ImG87p6jlJYRxuB/zicT9qNons=; b=YIQVM9QXUHsX99y3o67wi3bIyOo/vFqXyAKKNtHqAVziLKEcMCVuvOpl7cgDNjRtf4 Ut1LsJAi/u6Qu/TdfhhjbkgwNnvTQzpXBd8+ri99H9OK0DOB1f6dU1rCHt7UpyTJBSxm uRkzAsaF+uhBHbD+K5wKsp0lKGMJOjTMp61NTgmsrwCJGv6+vQlKVyerfC6XGUqB20M8 O99bXq2bCsjp2csgGK2k8RJBDk3EuV4DHm2Wk46g1iLcRyrjv/InmBDg7HiQbrbROWNz yDWHkRKai5TyPZtEQq9u01HORQe3MuoKnqt5DS8igJGd9WCg5T9/nTU0jBZ/Wdw03V+o IMGQ==; 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=1770778968; x=1771383768; 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=+B1UZjr3/D+dFvrvkcJtkgBplav/sgJr+K0++bZTvbY=; b=KcfwKOtFowanANlHfRnd7Kt3nbXHqTN0HeBD77h+ybtQYdNo/uIlNomQaCmHEGESPJ 6sz04Di/wggyNOwdbby01Z3llLAktqNojrnObsIGF4L1iQQDAb2g/prATN1jYs1L1ImP TcMKZ3+/tnpFMJg+0BewvEBxIc1gBLQL1qDJuo0FDNyEkNZpgYZYDfCLZuRdWpQd/Wda /JKVDVKmj2oxY+kYGDKE6EKHYeKGcPsq3F/Wh4+VwKTMpJBPwheyiFLxODrLidKQq7b2 aPTdHBehWsEPHtLjT+3I9GhvpQwUtmTlwM7iwsK7m/a0QTqjBru5TptDfcZ5FG01W3Ha wkxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770778968; x=1771383768; 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=+B1UZjr3/D+dFvrvkcJtkgBplav/sgJr+K0++bZTvbY=; b=gn/31tI5gt8TG+BHWMP1izXWaT2XohJw5V4KzAsMvMyLCHWZyvL3DMAcwjqDlqINBl lM4d3P1uyIoCrRq/frlWFNevtxdt9rxn2EiZ7o2GllZw1grKnjL377V9TcTX5OM0ios/ hMTMjjUAs1IR8eUpoEbZ/+zwIAYM34RgcXYIpugpIYZLBzPkdyLVyTe9rimVb0Dbr/M5 mA59KOnoPCTN1FN4LhA7MX37aFAuyWY76QuFMygaJG7SN+phVYRDh5mtnTppvO9qz65K dnhDPaUNyUi/ezZv7HhqJFkgw28Ef6zpcgNK7vfM75HQrI2C6o+/NhPzW6btRqGGywsg z2Bw== X-Gm-Message-State: AOJu0YyVlG0dJA9kclYDbhKRCr9S7o31BVmfB3yhG27Wqyg5I9favgZ2 GGlCpeSUkW/OnaWR/mgbpcjaZ2FtRo32QEgzN+oTU7i1vn8G6xMcC+hwGg3xXboY+pRReYnAQQa oewDx9sA0/jU0sSl6pSY7rfLpMJZC3iPpMQ== X-Gm-Gg: AZuq6aITxbo2HpQjMgJ7UA4evOtJ+UXL0Mh6EWR87AbaeZa8wQjuVDWqxLCyIdGLSJN n3TDhkPSC6KJ3G+45eG4Sax64FvYi9Ge/pS35TQyy8NuOBqoAG8a6KVZPCg4iYR9KMZZ1ATTatB WyVE3k6iImQEAXsJ5eAwy2Um6n3CdJvPquGCJlHuKGrTTnZQgvO+5XroVJQxCYj12E+D9jixIw4 ayo3mPZNeZaurZwnJ2YEfP0n02rhwjoJD4mbtMsJUrYNzYPca1HKnIc1A92Cz8lT6BzVDCqG4Ar r0R/z803bAs7PCc5uV4= X-Received: by 2002:a05:6820:62a:b0:66e:466d:8dd7 with SMTP id 006d021491bc7-672fe5bc7c3mr2044766eaf.32.1770778967740; Tue, 10 Feb 2026 19:02:47 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Ron Johnson Date: Tue, 10 Feb 2026 22:02:36 -0500 X-Gm-Features: AZwV_QhJl82zFXW6qscdA5Stg1YIHXqc-dTZZ4vkv5flJrVYlG-XIZ4dXinJv-Y Message-ID: Subject: Re: Fillfactor effectiveness on existing table To: pgsql-general Content-Type: multipart/alternative; boundary="000000000000591616064a839bf4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000591616064a839bf4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 10, 2026 at 9:34=E2=80=AFPM Durgamahesh Manne wrote: > > > 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 vacuu= m >>>> 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 t= he >>> 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-l= evel >>> 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 bot= h > toast and non toast I believe > 1) Did you vacuum? 2) What's the fillfactor? --=20 Death to , and butter sauce. Don't boil me, I'm still alive. lobster! --000000000000591616064a839bf4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Tue, Feb 10, 2026 at 9:34=E2=80=AFPM D= urgamahesh Manne <maheshpos= tgres9@gmail.com> wrote:


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. Johns= ton <david.g.johnston@gmail.com> wrote:
On Tuesd= ay, February 10, 2026, Durgamahesh Manne <maheshpostgres9@gmail.c= om> wrote:
Hi=C2=A0

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

How to e= nsure the applied fillfactor is working successfully=C2=A0

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


While free spac= e 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 sug= gest contriving a test case instead inspecting complex real data.=C2=A0 A t= able with a single bigint and say 50 fillfactor should be easily visible wh= en inspecting the free space of a page in the heap (not sure of the exact q= uery for this though).=C2=A0 There is a page-inspect contrib extension that= provides low-level details.

What abo= ut=C2=A0pgstattuple.free_space and=C2=A0free_percent?=C2=A0
Hi @Ron=C2=A0
approx_free_space | 13227478672 approx_free_percent |= 30.89065723142561

Free space can be considered as bloat for non toast ta= ble but not for both toast and non toast I believe=C2=A0=

1) Did you vacuum?
<= div>2) What's the fillfactor?

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