Hello, I have a system where there are mostly COPYs,
which insert data into a table. Ocasionally a COPY will fail (and thus,
dead rows appear), but as far as I can tell ROLLBACK is not reflected
anywhere in the pg_stats_user_tables. And since there are no rows
n_tup_upd or n_tup_del, therefore autovacuum will not fire for that table.
I see two possible solutions:1) let rollback increment both n_tup_ins and n_tup_del (or maybe n_tup_upd, at least)?
Thiswould be a good safeguard, I guess.
2) ANALYZE is able to see wether table is accumulating dead rows.
It might be a good idea to make ANALYZE able hint autovacuum that
some tables need VACUUM (that they exceed limits set for autovacuum).
The 2nd point could be a TODO item, perhaps? Something like:
When ANALYZE runs, make it note removable dead rows and non-removable
dead rows. If removable dead rows exceed some threshold, hint autovacuum
at that table.
Regards, Dawid