pgsql: HashAgg: use better cardinality estimate for recursive spilling.

From: Jeff Davis <jdavis(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: HashAgg: use better cardinality estimate for recursive spilling.
Date: 2020-07-29 06:21:28
Message-ID: E1k0fSy-0007uK-Q7@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

HashAgg: use better cardinality estimate for recursive spilling.

Use HyperLogLog to estimate the group cardinality in a spilled
partition. This estimate is used to choose the number of partitions if
we recurse.

The previous behavior was to use the number of tuples in a spilled
partition as the estimate for the number of groups, which lead to
overpartitioning. That could cause the number of batches to be much
higher than expected (with each batch being very small), which made it
harder to interpret EXPLAIN ANALYZE results.

Reviewed-by: Peter Geoghegan
Discussion: https://postgr.es/m/a856635f9284bc36f7a77d02f47bbb6aaf7b59b3.camel@j-davis.com
Backpatch-through: 13

Branch
------
REL_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/3a232a3183d517743acf232794fadc07f0944220

Modified Files
--------------
src/backend/executor/nodeAgg.c | 64 +++++++++++++++++++++++++++---------------
src/include/executor/nodeAgg.h | 2 +-
2 files changed, 43 insertions(+), 23 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Fujii Masao 2020-07-29 12:25:26 pgsql: Remove non-fast promotion.
Previous Message Jeff Davis 2020-07-29 06:17:13 pgsql: HashAgg: use better cardinality estimate for recursive spilling.