Vacuum Freeze and relfrozenxid - How to check which tables need to be vacuumed
Subramanian,Ramachandran <ramachandran.subramanian@alte-leipziger.de>
From: "Subramanian,Ramachandran" <ramachandran.subramanian@alte-leipziger.de>
To: "pgsql-novice@lists.postgresql.org" <pgsql-novice@lists.postgresql.org>
Date: 2026-05-15T09:15:27Z
Lists: pgsql-novice
I ran the below SQL in my sandbox to get a list of all the tables in my DB that have a relfrozenxid older than 500 ( A ridiculously low number, I know ).
Based on the results I ran a Vacuum freeze ( and later a vacuum FULL ) on all the tables that appeared in the list.
After the first vacuum I expected the tables to disappear IF I ran the sql the second time. That did not happen. ( either with Vacuum FREEZE or FULL )
Then I realized that it was possibly because Vacuum does not reset the old Transaction_ids but rather the hint bits in infomask. --> May be I am wrong here too.
How can I get a clear list of tables which have unfrozen transaction ids older than 500 ( or any number for that matter ).
Thank you all in advance for your time and help.
Regards
Ram
SELECT
cast (txid_current() as integer) - cast (age(PGCL.relfrozenxid) as integer) as GAP,
INTB.table_catalog as DB_NAME,
INTB.table_schema || '.' || PGCL.relname as TABLE_NAME,
pg_table_size(PGCL.oid) as TABLE_SIZE
FROM
pg_class PGCL,
information_schema.tables INTB
WHERE
PGCL.relname=INTB.table_name
AND
PGCL.relkind='r'
AND
cast (txid_current() as integer) - cast (age(PGCL.relfrozenxid) as integer) > 500
ORDER BY \
1 DESC ;
Freundliche Grüße
i. A. Ramachandran Subramanian
Zentralbereich Informationstechnologie
Alte Leipziger Lebensversicherung a.G.
Hallesche Krankenversicherung a.G.
Alte Leipziger Lebensversicherung a.G., Alte Leipziger-Platz 1, 61440 Oberursel
Vors. des Aufsichtsrats: Dr. Walter Botermann · Vorstand: Christoph Bohn (Vors.), Dr. Jürgen Bierbaum (stv. Vors.), Frank Kettnaker, Dr. Jochen Kriegmeier, Alexander Mayer, Christian Pape, Wiltrud Pekarek, Udo Wilcsek
Sitz Oberursel (Taunus) · Rechtsform VVaG · Amtsgericht Bad Homburg v. d. H. HRB 1583 · USt.-IdNr. DE 114106814
Hallesche Krankenversicherung a.G., Löffelstraße 34-38, 70597 Stuttgart
Vors. des Aufsichtsrats: Dr. Walter Botermann · Vorstand: Christoph Bohn (Vors.), Dr. Jürgen Bierbaum (stv. Vors.), Frank Kettnaker, Dr. Jochen Kriegmeier, Alexander Mayer, Christian Pape,
Wiltrud Pekarek, Udo Wilcsek
Sitz Stuttgart · Rechtsform VVaG · Amtsgericht Stuttgart HRB 2686 · USt.-IdNr. DE 147802285
Beiträge zu privaten Kranken- und Pflegekrankenversicherungen unterliegen nicht der Versicherungsteuer (§ 4 Nr. 5 VersStG) · Versicherungsleistungen sowie Umsätze aus Versicherungsvertreter-/Maklertätigkeiten sind umsatzsteuerfrei
Die Pflichtangaben der ALH Gruppe gemäß § 35a GmbHG bzw. § 80 AktG finden Sie hier: https://www.alte-leipziger.de/impressum
______________________
ALH Gruppe
Alte Leipziger-Platz 1, 61440 Oberursel
Tel.: +49 (6171) 66-4882
Fax: +49 (6171) 66-800-4882
E-Mail: ramachandran.subramanian@alte-leipziger.de
www.alte-leipziger.de
www.hallesche.de