IGNORE MY MESSAGE - AW: 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: "Subramanian,Ramachandran" <ramachandran.subramanian@alte-leipziger.de>, "pgsql-novice@lists.postgresql.org" <pgsql-novice@lists.postgresql.org>
Date: 2026-05-15T09:47:24Z
Lists: pgsql-novice
I apologize to have sent the earlier message.

The function AGE(relfrozenxid)) is itself the gap between the oldest frozen xid and current xid. There is no need for additional subtraction.


Once again.. I am sorry for asking a frivolous question.

Regards

Ram



#Build the SQL needed to get the list of tables that are approaching the SAFE_XID_GAP
SELECT
       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
     age(PGCL.relfrozenxid)  > "$SAFE_XID_GAP"  <-- 500 or any number for that matter.
ORDER BY
        1 DESC ;"


Freundliche Grüße

i. A. Ramachandran Subramanian
Zentralbereich Informationstechnologie

Alte Leipziger Lebensversicherung a.G.


Hallesche Krankenversicherung a.G.






______________________

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




Von: Subramanian,Ramachandran <ramachandran.subramanian@alte-leipziger.de>
Gesendet: Freitag, 15. Mai 2026 11:15
An: pgsql-novice@lists.postgresql.org
Betreff: Vacuum Freeze and relfrozenxid - How to check which tables need to be vacuumed



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.

______________________

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<mailto:ramachandran.subramanian@alte-leipziger.de>
www.alte-leipziger.de<https://www.alte-leipziger.de>
www.hallesche.de<https://www.hallesche.de>

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 (1) Nr. 5 b VersStG) · Versicherungsleistungen sowie Umsätze aus Versicherungsvertreter-/Maklertätigkeiten sind umsatzsteuerfrei


Pflichtangaben<https://www.alte-leipziger.de/impressum> der ALH Gruppe gemäß § 35a GmbHG bzw. § 80 AktG