Re: First draft of the PG 15 release notes (sorting)
David Rowley <dgrowleyml@gmail.com>
On Wed, 11 May 2022 at 14:38, Justin Pryzby <pryzby@telsasoft.com> wrote: > > On Wed, May 11, 2022 at 12:39:41PM +1200, David Rowley wrote: > > I think the sort improvements done in v15 are worth a mention under > > General Performance. The commits for this were 91e9e89dc, 40af10b57 > > and 697492434. I've been running a few benchmarks between v14 and v15 > > over the past few days and a fairly average case speedup is about 25%. > > but there are cases where I've seen up to 400%. I think the increase > > is to an extent that we maybe should have considered making tweaks in > > cost_tuplesort(). I saw some plans that ran in about 60% of the time > > by disabling Hash Agg and allowing Sort / Group Agg to do the work. > > Is there any reason not to consider it now ? Either for v15 or v15+1. If the changes done had resulted in a change to the number of expected operations as far as big-O notation goes, then I think we might be able to do something. However, nothing changed in the number of operations. We only sped up the constant factors. If it were possible to adjust those constant factors based on some performance benchmarks results that were spat out by some single machine somewhere, then maybe we could do some tweaks. The problem is that to know that we're actually making some meaningful improvements to the costs, we'd want to get the opinion of >1 machine and likely >1 CPU architecture. That feels like something that would be much better to do during a release cycle rather than at this very late hour. The majority of my benchmarks were on AMD zen2 hardware. That's likely not going to reflect well on what the average hardware is that runs PostgreSQL. Also, I've no idea at this stage what we'd even do to cost_tuplesort(). The nruns calculation is a bit fuzzy and never really took the power-of-2 wastage that 40af10b57 reduces. Maybe there's some argument for adjusting the 2.0 constant in compute_cpu_sort_cost() based on what's done in 697492434. But there's plenty of datatypes that don't use the new sort specialization functions. Would we really want to add extra code to the planner to get it to try and figure that out? David
Commits
-
Doc: last minute adjustment to the release notes
- bb76510a07f3 15.0 landed
-
Doc: more tweaking of v15 release notes.
- 780add2c32a7 15.0 landed
-
Doc: further adjust notes about pg_upgrade_output.d.
- fbd2bd15b011 16.0 landed
- 796aa20a11b4 15.0 landed
-
Doc: add list of major features to the v15 release notes.
- a2ab0ad88cf8 15.0 landed
-
relnotes: update item about public schema permission change
- f5135d2aba87 15.0 landed
-
relnotes: update ordered partition scan item
- de89d8711e2b 15.0 landed
-
relnotes: add Heikki to UTF8 item
- 335e444f2269 15.0 landed
-
relnotes: improve UTF8 text item in relation to ASCII
- 9499c0fcf488 15.0 landed
-
relnotes: add null logical replication item
- 3715850ecc52 15.0 landed
-
relnotes: adjust several logical replication items and FK text
- 25285e5d4ee5 15.0 landed
-
relnotes: mention non-exclusive backup mode was deprecated
- 6bfecf33f6ed 15.0 landed
-
relnotes: add author to in-memory sorts item
- d70b95a7178a 15.0 landed
-
relnotes: update for non-exclusive backup mode removal
- da82c6246986 15.0 landed
-
relnote: improve sorting entries
- 922d1a27e9bd 15.0 landed
-
relnotes: adjustments from Álvaro Herrera
- 78ccd6cca48d 15.0 landed
-
relnotes: update foreign key partition and add sort items
- 279d957efebb 15.0 landed
-
relnotes: more adjustments
- 38fbbb5bb293 15.0 landed
-
relnotes: logical replication permissions checked by subscrib.
- 581c4e5b3185 15.0 landed
-
relnotes: adjustments
- a3c5f56c213e 15.0 landed
-
relnotes: remove sequence replication and update 'postgres -C'
- 653443ed83f0 15.0 landed
-
relnote: extensive updates
- 9d89bb8a025d 15.0 landed
-
relnotes: "training" -> "trailing"
- 3c534949bbb0 15.0 landed
-
Standardize references to Zstandard as <productname>
- 586955dddecc 15.0 cited
-
pgstat: Update docs to match the shared memory stats reality.
- b3abca68106d 15.0 cited
-
Raise a WARNING for missing publications.
- 8f2e2bbf1453 15.0 cited
-
Skip empty transactions for logical replication.
- d5a9d86d8ffc 15.0 cited
-
Optionally disable subscriptions on error.
- 705e20f8550c 15.0 cited
-
Allow root-owned SSL private keys in libpq, not only the backend.
- 2a1f84636dc3 14.3 cited
-
Use COPY FREEZE in pgbench for faster benchmark table population.
- 06ba4a63b85e 15.0 cited