I just checked the state of vacuum in my PostgreSQL database and it's at a critical level:

$ check_postgres --action=last_vacuum
POSTGRES_LAST_VACUUM CRITICAL: DB "postgres" DB: postgres TABLE: pg_catalog.pg_shdepend: 09:22 August 12, 2013 (40 weeks 2 days 4 hours 9 minutes) | time=0.52s postgres.pg_catalog.pg_shdepend=24379780s;86400;172800

but I am running autovacuum. Why would this happen?

  • 1
    I think the better question would be: why does check_postgres think that this is critical?
    – jjanes
    May 21, 2014 at 18:01

1 Answer 1


check_postgres isn't very sophisticated software. It just checks if a particular table was vacuumed in the last 2 days (or as configured). For tables with no updates or deletes it is perfectly normal to not be vacuumed for extended periods of time. You can either ignore this or configure check_postgres to ignore this particular table.

I don't think this functionality of check_postgres is of much use. Maybe for some particular tables. Definitely not so much for system tables like pg_catalog.pg_shdepend.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.