Re: POC: GROUP BY optimization
Tomas Vondra <tomas.vondra@enterprisedb.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Restore preprocess_groupclause()
- 505c008ca37c 17.0 landed
-
Rename PathKeyInfo to GroupByOrdering
- 0c1af2c35c7b 17.0 landed
-
Add invariants check to get_useful_group_keys_orderings()
- 91143c03d4ca 17.0 landed
-
Fix asymmetry in setting EquivalenceClass.ec_sortref
- 199012a3d844 17.0 landed
-
Multiple revisions to the GROUP BY reordering tests
- 874d817baa16 17.0 landed
-
Get rid of pg_class usage in SJE regression tests
- e1b7fde418f2 17.0 landed
-
Rename index "abc" in aggregates.sql
- b91f91870828 17.0 landed
-
Explore alternative orderings of group-by pathkeys during optimization.
- 0452b461bc40 17.0 landed
-
Generalize the common code of adding sort before processing of grouping
- 7ab80ac1caf9 17.0 landed
-
Fix out-dated comment in preprocess_groupclause()
- f6c70b81802a 15.0 landed
- 78a9af1a2764 16.0 landed
-
Force parallelism in partition_aggregate
- 2fe6b2a806f2 16.0 landed
- 01474f56981a 15.0 landed
-
Optimize order of GROUP BY keys
- db0d67db2401 15.0 landed
Attachments
- 0001-Optimize-order-of-GROUP-BY-keys-20220328.patch (text/x-patch) patch 0001
- 0002-fixup-rework-GUC-options-20220328.patch (text/x-patch) patch 0002
- 0003-fixup-minor-code-cleanup-20220328.patch (text/x-patch) patch 0003
- 0004-fixup-comments-cleanup-type-fixes-and-rewor-20220328.patch (text/x-patch) patch 0004
- 0005-fixup-minor-simplification-20220328.patch (text/x-patch) patch 0005
- 0006-fixup-add-GUC-to-docs-20220328.patch (text/x-patch) patch 0006
- 0007-demonstrate-disabled-optimization-20220328.patch (text/x-patch) patch 0007
Hi,
Here's a rebased/improved version of the patch, with smaller parts
addressing various issues. There are seven parts:
0001 - main part, just rebased
0002 - replace the debug GUC options with a single GUC to disable the
optimization if needed
0003 - minor code cleanup, removal of unnecessary variable
0004 - various comment fixes (rewordings, typos, ...)
0005 - a minor code simplification, addressing FIXMEs from 0004
0006 - adds the new GUC to the docs
0007 - demonstrates plan changes with a disabled optimization
The first 6 parts should be squashed and committed at one, I only kept
them separate for clarity. The 0007 is merely a demonstration of the new
GUC and that it disables the optimization.
> Agree. Because it is a kind of automation we should allow user to switch
> it off in the case of problems or manual tuning.
> > Also, I looked through this patch. It has some minor problems:
> 1. Multiple typos in the patch comment.
I went through the comments and checked all of them for grammar mistakes
and typos using a word processor, so hopefully that should be OK. But
maybe there's still something wrong.
> 2. The term 'cardinality of a key' - may be replace with 'number of
> duplicates'?
No, cardinality means "number of distinct values", so "duplicates" would
be wrong. And I think "cardinality" is well established term, so I think
it's fine.
BTW I named the GUC enable_group_by_reordering, I wonder if it should be
named differently, e.g. enable_groupby_reordering? Opinions?
regards
--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company