Run the following on a psql command line to see how many dead rows exist, and to verify that AUTOVACUUM is running: SELECT schemaname, relname, n_live_tup, n_dead_tup, last_autoanalyze, last_autovacuum FROM pg_stat_all_tables ORDER BY last_autovacuum DESC NULLS LAST; The n_live_tup is the remaining rows in your table while n_dead_tup is the number of rows that have been marked for deletion. Explanation: https://coderbook.com/@marcus/postgres-autovacuum-vacuum-and-analyze-explained/