> Except there isn’t some singular provably correct value here. Today’s > behavior (considering dead tuples) > is not intrinsically wrong nor correct, and neither is what you propose > (ignoring the dead tuples). > The fact that those dead tuples get removed regardless is a point in favor of > counting them when deciding what to do. > And it’s also the long-standing behavior. You need to make a compelling > argument to change to your preference. > > Inserting aborted dead tuples moves the counter closer to both autovacuum > thresholds. > There is no reason why that should be prohibited. I can see the argument for > why one > threshold should be dead tuples only and the other live tuples only - but I > don’t favor that design.
Fair enough, and I think I got my answers from this thread. This design decision was not discussed in the thread for b07642dbcd8. So, I think public documentation updates to clarify that n_tup_upd|del|ins, and n_ins_since_vacuum include aborted rows is a good enhancement. Also a code comment in pgstat_relation_flush_cb that explains ins_since_vacuum intentionally includes aborted inserts. tabentry->ins_since_vacuum += lstats->counts.tuples_inserted; -- Sami Imseih