On Thu, 31 Oct 2024 at 18:51, Melanie Plageman <melanieplage...@gmail.com> wrote:
> > Would it also be useful to have the number set all-visible? It seems > like if we added a new line prefixed with visibility map, it ought to > include all-visible and all-frozen then. > Something like this: > visibility map: %u pages set all-visible, %u pages set all-frozen. > > I find it more confusing to say "up to X may have been removed from > the table." It's unclear what that means -- especially since we > already have "pages removed" in another part of the log message. > Yeah, on looking at it again, that does seem to make things worse. We actually could call visibilitymap_count() at the beginning of the > vacuum and then log the difference between that and the results of > calling it after finishing the vacuum. We currently call it after > truncating the table anyway. That won't tell you how many pages were > set all-frozen by this vacuum, as pages could have been unfrozen by > DML that occurred after the page was vacuumed. It might be useful in > addition to the line about the visibility map. > > This is somewhat in conflict with Robert and Peter's points about how > autovacuum logging should be about what this vacuum did. But, we do > have lines that talk about the before and after values: > > new relfrozenxid: 748, which is 3 XIDs ahead of previous value > > So, we could do something like: > visibility map before: %u pages all-visible, %u pages all-frozen > visibility map after: %u pages all-visible, %u pages all-frozen > or > visibility map after: %u pages all-visible (%u more than before), %u > pages all-frozen (%u more than before) > > I still prefer adding how many pages were set all-frozen by this vacuum, > though. > > I also like the idea of showing how many pages were set all-frozen by this vacuum (which meets Robert's requirement for figuring out if a vacuum operation did anything useful). The values for pages marked all visible and all frozen can fluctuate for a number of reasons, even, as you point out, from concurrent activity during the vacuum. This is different from relfrozenxid which is a kind of high water mark. So I think the output styles can reasonably be different. visibility map: %u pages all-visible (%u marked by this operation), %u pages all-frozen (%u marked by this operation) seems to support everyone's requirements