Autovacuum script

From: Avihai Shoham <avihai(dot)shoham(at)gmail(dot)com>
To: pgsql-admin(at)lists(dot)postgresql(dot)org
Subject: Autovacuum script
Date: 2022-04-07 09:36:59
Message-ID: CA+=0ERct5Orv+GeERiROr4n+EXVi1=V+iQTnozb5qY+e_MaCFQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

Hi All ,

I would like for you advice/sharing about a python script that will run
overnight and do autovacuum.

I'm sharing mine below and will happy if you have suggestion to improve it
, or sharing yours in case you have.

I'm not an expert of python or postgrsql so please understand :)

The script below do autovacuum for the biggest 10 tables
-----------------------------------------------------------------------------------------------------------------------------------
#!/usr/bin/python
import psycopg2
import sys,traceback

con = None
query = ''

try:
con = psycopg2.connect(host="<>", database="manager", user="<>",
password="<>")
cur = con.cursor()
print("Execute query cur.execute")

cur.execute('select relname as
"Table",pg_size_pretty(pg_total_relation_size(relid)) As
"Size",pg_size_pretty(pg_total_relation_size(relid) -
pg_relation_size(relid)) as "External Size" FROM
pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid)
DESC;select relname as
"Table",pg_size_pretty(pg_total_relation_size(relid)) As
"Size",pg_size_pretty(pg_total_relation_size(relid) -
pg_relation_size(relid)) as "External Size" FROM
pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid)
DESC ')
rows = cur.fetchmany(10)
print("Selecting rows from table using cursor.fetchall")

con.set_isolation_level(0)
for row in rows:
print (row[0], row[1], row[2])
query = 'VACUUM FULL %s;' % (row[0])
cur.execute(query)
# need to add a print after execution to know the size zfter
autovacuum print (row[0], row[1], row[2])

except psycopg2.Error as e:
print "I am unable to connect to the database"
print e
print e.pgcode
print e.pgerror
print traceback.format_exc()

finally:
# closing database connection.
if con:
cur.close()
con.close()
print("PostgreSQL connection is closed")

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Dennis 2022-04-07 10:15:56 Migration data from Postgres on Windows to Postgres on Linux
Previous Message Nikhil Ingale 2022-04-05 15:13:23 Re: failed to execute the psql case statement which has the function call.