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 1vaFl9-005tQP-1D for pgsql-general@arkaria.postgresql.org; Mon, 29 Dec 2025 16:06: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 1vaFl8-00HMXd-0u for pgsql-general@arkaria.postgresql.org; Mon, 29 Dec 2025 16:06:15 +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 1vaFl7-00HMXV-32 for pgsql-general@lists.postgresql.org; Mon, 29 Dec 2025 16:06:14 +0000 Received: from mail-oo1-xc2b.google.com ([2607:f8b0:4864:20::c2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vaFl7-003CVP-1B for pgsql-general@postgresql.org; Mon, 29 Dec 2025 16:06:13 +0000 Received: by mail-oo1-xc2b.google.com with SMTP id 006d021491bc7-657509d761dso5054613eaf.0 for ; Mon, 29 Dec 2025 08:06:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767024372; x=1767629172; darn=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=8i0K7KsMP79WIZuPqN3gzQH55yJl+xRm0QIUdcEDtAU=; b=YifJU2Jxb+Wp5guvIBl3kYLgskuBxIZwKKErUOOfiH2jOKVTrPzvLW0vPvR1L7h79b XW+ItoN8lr2AlCnSvrhukk9Icka+UgV/2wwyeFcRXPp03qUZwE7MZVXdDiBV1hyCNRPa 0uJcJtMJn2XErQ5wPNeirzmTyZNJwcOZGln49PY7p4MhvMGcby0rQ2TM9OO2H1yKBocv minfnVS+7HeIAVHezM3dFay4vJ8THfnHqa7fHD/kRiKGYbeFiedL2FHyPxERukyEK4/8 z8/pr9HhGNZ2DhkQerH1gZtlRZSsJIouu4/XLA9LODcftOQgsrvaTP8lN0Wb9SflvyO/ i3Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767024372; x=1767629172; 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=8i0K7KsMP79WIZuPqN3gzQH55yJl+xRm0QIUdcEDtAU=; b=whO31abdrrF78d8MndzmfghXgOhOPCwZiSVOXi4PedMRg8XK06hpIKwyx4VFpy5trV kf/Q/Wiy17HdC6HR/kVWCGz+5EV5/i2u9VJRsUaak0ExcAO1o6lUDvgfJ9vpo7Z1t+ND YzVa51lZuRWaZOMSBlu7h5OMFl1dqo4tl4nZXN7SBOlPqZ949TGGZW8q7441Hjf8ozhp Oran8HRpIrXjPBzeVVAvXWcay+JZRFIdgKoUPFjmTHwO1O2et7QESC31RFK121aAxlgT 63jp5g0OOG/tHWXygt3bLCr69eTZbMNO3CYsZ+okcRUps01vjrAvmWnCBp+BPoTmC6pe E+Tg== X-Gm-Message-State: AOJu0YyewOCfmOCYDX7CM1OlxxPtanYHzYzAkNsAsrqvUDCNzMeDlTJS BQqn+FuZZOiLY0KcegxStqMzVd1qXj+Z7FstQANw2sTg99m7VjhcZpDwH/s/V4f/xRtVYwjsgNq Va1pCSmdAflkCxarPgXHGbr65WcDdoYQ5aJGL X-Gm-Gg: AY/fxX4NnbZroRXwhbXRRPEA4GZSjiwffO5vyQnKXsOEoo1JDGip4bNj0LLcgqIrx+t w7KzK9MQIicRKZIW0WqaKI+7Jm9uTdtYc2vdVQwfdYm9NzYnBfOHaEyunWsSK/9/MunLG2sg5Kx Mkbwo6Y/3mAQtDYE3Q+IqrwfgfvtT4xXmgm2vCA69MXTmuq5GhLr4XfV+R66byfRRxmsYeFKdGd B/+6+gfYDmkd65pHpr1hI8J5kF2pW9L1SRHYpWkqO1O4lg2oCrDpmOOBdLrcp4+akOT+F9s X-Google-Smtp-Source: AGHT+IG7Bcme1klFm9bcsR/23BTKBJBhUf3zlT7HFMApqHWw4VAKPUxhoQai9ILC4lPhMyz8955v/ijnh7NzQinCRi8= X-Received: by 2002:a05:6820:f028:b0:659:9a49:8f99 with SMTP id 006d021491bc7-65d0ea3bcebmr13095498eaf.18.1767024371712; Mon, 29 Dec 2025 08:06:11 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Ron Johnson Date: Mon, 29 Dec 2025 11:06:00 -0500 X-Gm-Features: AQt7F2oxZ54EmAKmaZMKKJDTy8CCkc8Gq2C5HAk91QlyrZLtuCZ8KKaHw23mPtQ Message-ID: Subject: Re: How did VACUUM ANALYZE reclaim large TOAST bloat at disk level in PostgreSQL 16? To: pgsql-general Content-Type: multipart/alternative; boundary="000000000000fc474e0647196bb2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fc474e0647196bb2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Dec 29, 2025 at 10:53=E2=80=AFAM pramod gupta wrote: > Hello Everyone, > > We have a table with a total size of ~628 GB, out of which ~601 GB was > TOAST data. > After running VACUUM ANALYZE on a weekly basis, the table size reduced > significantly to ~109 GB, indicating a large amount of bloat removal. > > I would like to understand: > > How was VACUUM ANALYZE able to reclaim such a large amount of space, > especially for TOAST data? > > Under what conditions does PostgreSQL reclaim disk space without requirin= g > VACUUM FULL or CLUSTER? > > Is this behavior expected in PostgreSQL 16, particularly for heavily > updated or deleted TOASTed columns? > > Any insights or documentation references would be greatly appreciated. > > PostgreSQL version: 16 > See the TRUNCATE option: https://www.postgresql.org/docs/12/sql-vacuum.html --=20 Death to , and butter sauce. Don't boil me, I'm still alive. lobster! --000000000000fc474e0647196bb2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Mon, Dec 29, 2025 at 10:53=E2=80=AFAM = pramod gupta <mail2sony2010@g= mail.com> wrote:
Hello= Everyone,

We have a table with a total size of ~628 GB, out of whic= h ~601 GB was TOAST data.
After running VACUUM ANALYZE on a weekly basis= , the table size reduced significantly to ~109 GB, indicating a large amoun= t of bloat removal.

I would like to understand:

How was VACUU= M ANALYZE able to reclaim such a large amount of space, especially for TOAS= T data?

Under what conditions does PostgreSQL reclaim disk space wit= hout requiring VACUUM FULL or CLUSTER?

Is this behavior expected in = PostgreSQL 16, particularly for heavily updated or deleted TOASTed columns?=

Any insights or documentation references would be greatly appreciat= ed.

PostgreSQL version: 16

See the TRUNCATE option:

--
Death to <Redacted>, and butter sauce.Don't boil me, I'm still alive.
<Redacted> lobs= ter!
--000000000000fc474e0647196bb2--