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
Attachment:
signature.asc
Description: Digital signature