Re: Todo: Teach planner to evaluate multiple windows in the optimal order
John Naylor <john.naylor@enterprisedb.com>
From: John Naylor <john.naylor@enterprisedb.com>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Ankit Kumar Pandey <itsankitkp@gmail.com>,
pghackers <pgsql-hackers@lists.postgresql.org>, Vik Fearing <vik@postgresfriends.org>
Date: 2023-02-15T04:23:15Z
Lists: pgsql-hackers
Attachments
- bench_cartesiansort.sh (application/x-shellscript)
On Tue, Feb 14, 2023 at 5:46 PM David Rowley <dgrowleyml@gmail.com> wrote: > > I didn't do a detailed review of the sort patch, but I did wonder > about the use of the name "fallback" in the new functions. The > comment in the following snippet from qsort_tuple_unsigned_compare() > makes me think "tiebreak" is a better name. I agree "tiebreak" is better. > I also wonder if the weirdness I reported in [1] would also disappear > with your patch. There's a patch on that thread that hacks up the > planner to split multi-column sorts into Sort -> Incremental Sort > rather than just a single sort. I tried that test (attached in script form) with and without the tiebreaker patch and got some improvement: HEAD: 4 ^ 8: latency average = 113.976 ms 5 ^ 8: latency average = 783.830 ms 6 ^ 8: latency average = 3990.351 ms 7 ^ 8: latency average = 15793.629 ms Skip rechecking first key: 4 ^ 8: latency average = 107.028 ms 5 ^ 8: latency average = 732.327 ms 6 ^ 8: latency average = 3709.882 ms 7 ^ 8: latency average = 14570.651 ms I gather that planner hack was just a demonstration, so I didn't test it, but if that was a move toward something larger I can run additional tests. The configuration was (same as yesterday, but forgot to mention then) turbo off shared_buffers = '8GB'; work_mem = '4GB'; max_parallel_workers = 0; -- John Naylor EDB: http://www.enterprisedb.com
Commits
-
Split out tiebreaker comparisons from comparetup_* functions
- c9bfa40914be 17.0 landed
-
Add additional regression tests for select_active_windows
- a14a5832923e 16.0 landed