On Tue, Oct 24, 2023 at 3:42 AM Nathan Bossart <nathandboss...@gmail.com> wrote:
>
> On Sun, Oct 22, 2023 at 12:07:59PM -0700, Andres Freund wrote:
> > Medium term, I think we need an approximate xid->"time of assignment" 
> > mapping that's continually maintained on the primary. One of the things 
> > that'd show us to do is introduce a GUC to control the maximum effect of 
> > hs_feedback  on the primary, in a useful unit. Numbers of xids are not a 
> > useful unit (100k xids is forever on some systems, a few minutes at best on 
> > others, the rate is not necessarily that steady when plpgsql exception 
> > handles are used, ...)
> >
> > It'd be useful to have such a mapping for other features too. E.g.
> >
> >  - making it visible in pg_stat _activity how problematic a longrunning 
> > xact is - a 3 day old xact that doesn't have an xid assigned and has a 
> > recent xmin is fine, it won't prevent vacuum from doing things. But a 
> > somewhat recent xact that still has a snapshot from before an old xact was 
> > cancelled could be problematic.
> >
> > - turn pg_class.relfrozenxid into an understandable timeframe. It's a fair 
> > bit of mental effort to classify "370M xids old" into problem/fine (it's 
> > e.g. not a problem on a system with a high xid rate, on a big table that 
> > takes a bit to a bit to vacuum).
> >
> > - using the mapping to compute an xid consumption rate IMO would be one 
> > building block for smarter AV scheduling. Together with historical vacuum 
> > runtimes it'd allow us to start vacuuming early enough to prevent hitting 
> > thresholds, adapt pacing, prioritize between tables etc.
>
> Big +1 to all of this.

Sounds like a TODO?


Reply via email to