Re: BUG #17717: Regression in vacuumdb (15 is slower than 10/11 and possible memory issue)
Justin Pryzby <pryzby@telsasoft.com>
From: Justin Pryzby <pryzby@telsasoft.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, postgresql@taljaren.se, pgsql-bugs@lists.postgresql.org, Peter Geoghegan <pg@bowt.ie>
Date: 2022-12-29T01:29:10Z
Lists: pgsql-bugs, pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add options to control whether VACUUM runs vac_update_datfrozenxid.
- a46a7011b271 16.0 landed
-
Use catalog query to discover tables to process in vacuumdb
- e0c2933a767c 12.0 cited
On Sun, Dec 18, 2022 at 11:21:47AM +0900, Michael Paquier wrote: > On Thu, Dec 15, 2022 at 01:56:30PM -0500, Tom Lane wrote: > > * To fix vacuumdb properly, it might be enough to get it to > > batch VACUUMs, say by naming up to 1000 tables per command > > instead of just one. I'm not sure how that would interact > > with its parallelization logic, though. It's not really > > solving the O(N^2) issue either, just pushing it further out. > > I have been thinking about this part, and using a hardcoded rule for > the batches would be tricky. The list of relations returned by the > scan of pg_class are ordered by relpages, so depending on the > distribution of the sizes (few tables with a large size and a lot of > table with small sizes, exponential distribution of table sizes), we > may finish with more downsides than upsides in some cases, even if we > use a linear rule based on the number of relations, or even if we > distribute the relations across the slots in a round robin fashion for > example. I've always found it weird that it uses "ORDER BY relpages". I'd prefer if it could ORDER BY age(relfrozenxid) or GREATEST(age(relfrozenxid), age(relminmxid)), at least if you specify one of the --min-*age parms. Or something less hardcoded and unconfigurable. -- Justin