Re: Eager aggregation, take 3
Matheus Alcantara <matheusssilv97@gmail.com>
Attachments
- query-23.master.explain (application/octet-stream)
- query-23.patch.explain (application/octet-stream)
- tpcds-eager-aggregate-times.csv (text/csv)
On Thu Oct 2, 2025 at 5:49 AM -03, Richard Guo wrote: > On Thu, Oct 2, 2025 at 10:39 AM Richard Guo <guofenglinux@gmail.com> wrote: >> It seems eager aggregation doesn't cope well with parallel plans for >> this query. Looking into it. > > It turns out that this is not related to parallel plans but rather to > poor size estimates. > > [ ... ] > Matheus, I wonder if you could help run TPC-DS again with this patch, > this time with nested loops disabled for all queries. > Thanks for all the details. I've disabled the nested loops and executed the benchmark again and the results look much better! I see a 55% improvement on query_31 on my machine now (MacOS M3 Max). The only query that I see a considerable regression is query 23 which I get a 23% worst execution time. I'm attaching the EXPLAIN(ANALYZE) output from master and from the patched version if it's interesting. I'm also attaching a csv with the planning time and execution time from master and the patched version for all queries. It contains the % of difference between the executions. Negative numbers means that the patched version using eager aggregation is faster. (I loaded this csv on a postgres table and played with some queries to analyze the results). I'm just wondering if there is anything that can be done on the planner to prevent this type of situation? -- Matheus Alcantara
Commits
-
Fix eager aggregation for semi/antijoin inner rels
- ffeda04259bb 19 (unreleased) landed
-
Cover additional errors and corner conditions in repack.c
- 2670cc298f42 19 (unreleased) cited
-
Fix volatile function evaluation in eager aggregation
- 3a08a2a8b4fd 19 (unreleased) landed
-
Fix collation handling for grouping keys in eager aggregation
- bd94845e8c90 19 (unreleased) landed
-
Rename apply_at to apply_agg_at for clarity
- 1206df04c200 19 (unreleased) landed
-
Fix comment in eager_aggregate.sql
- 36fd8bde1b77 19 (unreleased) landed
-
Remove unnecessary include of "utils/fmgroids.h"
- f997d777adf7 19 (unreleased) landed
-
Implement Eager Aggregation
- 8e11859102f9 19 (unreleased) landed
-
Allow negative aggtransspace to indicate unbounded state size
- 185e30426334 19 (unreleased) landed
-
Add macros for looping through a List without a ListCell.
- 14dd0f27d7cd 17.0 cited
-
Account for the effect of lossy pages when costing bitmap scans.
- 5edc63bda68a 11.0 cited
-
Fix a thinko in join_is_legal: when we decide we can implement a semijoin
- a43b190e3c71 9.0.0 cited