Ah right, yeah, it's insert only. So, it's never been vacuumed. On 20 April 2017 at 01:25, Stephen Frost <sfrost@xxxxxxxxxxx> wrote: > Greetings, > > * Samuel Williams (space.ship.traveller@xxxxxxxxx) wrote: >> Thanks for all the suggestions Stephen. >> >> > That explain analyze shows a whole ton of heap fetches. When was the >> last time a VACUUM was run on this table, to build the visibility map? >> Without the visibility map being current, an Index-Only Scan, as is >> happening here, can really suck. >> >> I'm using the default 9.6 config, I thought that auto-vacuum was on by default? > > Sure, but that doesn't mean the table gets vacuumed. In particular, > actual vacuums are only kicked off when the number of *updated* or > *deleted* tuples passes the autovacuum threshold. If no updates or > deletes are done on the table (iow, it's essentially an insert-only or > insert-mostly table), the autovacuum daemon nevers runs a vacuum on it > (though it'll run analyze's). > > https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-THRESHOLD > > Check pg_stat_all_tables to see when/if the table has actually been > vacuumed. > > Thanks! > > Stephen -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general