When autovacuum falls behind, performance eventually degrades as the percentage of a table that is "dirty" increases. It seems to me that the issue is not strictly the percentage of a table that is dirty, but how often a stale tuple is read and resolved to a live tuple (or another dead tuple). I'd like to surface the dirty tuple read rate per table, this would enable more precise diagnosis of the autovacuum falling behind condition.
I understand Postgres 16 offers the `pg_stat_io` view, but I don't see a way to track this information explicitly in that view.
Would this be a fruitful metric to track? Has anyone looked into this already and has some knowledge to share?
Thanks in advance for any insight anyone can provide,