Re: vacuumdb changes for stats import/export
Bruce Momjian <bruce@momjian.us>
From: Bruce Momjian <bruce@momjian.us>
To: "David G. Johnston" <david.g.johnston@gmail.com>
Cc: Frédéric Yhuel <frederic.yhuel@dalibo.com>, Nathan Bossart <nathandbossart@gmail.com>, Corey Huinker <corey.huinker@gmail.com>, John Naylor <johncnaylorls@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Jeff Davis <pgsql@j-davis.com>, jian he <jian.universality@gmail.com>, Matthias van de Meent <boekewurm+postgres@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Magnus Hagander <magnus@hagander.net>, Stephen Frost <sfrost@snowman.net>, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, Peter Smith <smithpb2250@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, alvherre@alvh.no-ip.org
Date: 2025-07-26T16:06:52Z
Lists: pgsql-hackers
On Sat, Jul 26, 2025 at 07:47:47AM -0700, David G. Johnston wrote: > On Sat, Jul 26, 2025, 07:23 Bruce Momjian <bruce@momjian.us> wrote: > > On Wed, Jul 23, 2025 at 02:45:10PM +0200, Frédéric Yhuel wrote: > > > > > > On 3/18/25 22:37, Nathan Bossart wrote: > > > Committed with the following small changes: > > > > Hi, I don't really understand this sentence in > > doc/src/sgml/ref/vacuumdb.sgml: > > > > > This option prevents vacuumdb from deleting existing statistics so that > > the query optimizer's choices do not become transiently worse. > > > > I thought that the point was to avoid unnecessary post-upgrade analyzes? > > So, the full paragraph is: > > + Only analyze relations that are missing statistics for a column, > index > + expression, or extended statistics object. This option prevents > + <application>vacuumdb</application> from deleting existing > statistics > + so that the query optimizer's choices do not become transiently > worse. > > What it is trying to say is that if you run vacuumedb without this > option, not only will it analyze all tables, including ones that already > have statistics, but will drop statistics on this tables that already > have statistics for a brief period while it installs new statistics. > During that period, the optimizer will not have any statistics for the > table. Is there a clearer way to state this? > > Statistics are transactional. Without this option specified are we really > removing them and commiting prior to computing and saving new ones? And we are > opposed to just changing this behavior and instead prefer to add an option that > at first glance seems like everyone should use? Yes, I thought it was transactional too, but the doc patch suggests is isn't, so maybe I am wrong. > "If not specified the system will analyze all statistics-capable objects in > alphabetical order. Specifying this option then limits the result to only > those objects that do not already have statistics.". That may not be how the > feature strictly behaves but that would seem to be all one would expect it to > do. Yes, I would prefer the simpler text, if it is accurate. -- Bruce Momjian <bruce@momjian.us> https://momjian.us EDB https://enterprisedb.com Do not let urgent matters crowd out time for investment in the future.
Commits
-
doc: Adjust documentation for vacuumdb --missing-stats-only.
- ee924698d566 19 (unreleased) landed
- da103c7bc806 18.0 landed
-
Update guidance for running vacuumdb after pg_upgrade.
- c9d502eb6809 18.0 landed
-
vacuumdb: Add option for analyzing only relations missing stats.
- edba754f052e 18.0 landed
- 5f8eb25706b6 18.0 landed
-
vacuumdb: Teach vacuum_one_database() to reuse query results.
- 9c03c8d18721 18.0 landed