Re: Memory-Bounded Hash Aggregation
Heikki Linnakangas <hlinnaka@iki.fi>
On 05/02/2020 21:56, Jeff Davis wrote: > On Tue, 2020-02-04 at 18:10 +0200, Heikki Linnakangas wrote: >> I'd love to change the LogicalTape API so that you could allocate >> and >> free tapes more freely. I wrote a patch to do that, as part of >> replacing >> tuplesort.c's polyphase algorithm with a simpler one (see [1]), but >> I >> never got around to committing it. Maybe the time is ripe to do that >> now? > > It's interesting that you wrote a patch to pause the tapes a while ago. > Did it just fall through the cracks or was there a problem with it? > > Is pause/resume functionality required, or is it good enough that > rewinding a tape frees the buffer, to be lazily allocated later? It wasn't strictly required for what I was hacking on then. IIRC it would have saved some memory during sorting, but Peter G felt that it wasn't worth the trouble, because he made some other changes around the same time, which made it less important (https://www.postgresql.org/message-id/CAM3SWZS0nwOPoJQHvxugA9kKPzky2QC2348TTWdSStZOkke5tg%40mail.gmail.com). I dropped the ball on both patches then, but I still think they would be worthwhile. - Heikki
Commits
-
Fix costing for disk-based hash aggregation.
- 7351bfeda33b 13.0 landed
-
Fixes for Disk-based Hash Aggregation.
- 64fe60227909 13.0 landed
-
Disk-based Hash Aggregation.
- 1f39bce02154 13.0 landed
-
Extend ExecBuildAggTrans() to support a NULL pointer check.
- c954d4904650 13.0 landed
-
Save calculated transitionSpace in Agg node.
- c11cb17dc55a 13.0 landed
-
Minor refactor of nodeAgg.c.
- 5b618e1f48ae 13.0 landed
-
Logical Tape Set: lazily allocate read buffer.
- 7fdd919ae755 13.0 landed
-
Introduce TupleHashTableHash() and LookupTupleHashEntryHash().
- 4eaea3db150a 13.0 landed
-
Logical Tape Set: use min heap for freelist.
- c02fdc922301 13.0 landed
-
Fix comments in execGrouping.c
- 30d47723fd15 13.0 landed
-
Avoid integer overflow while sifting-up a heap in tuplesort.c.
- 512f67c8d02c 10.0 cited
-
Make the overflow guards in ExecChooseHashTableSize be more protective.
- 8442317beb8f 9.0.0 cited
-
Improve performance of our private version of qsort. Per recent testing,
- a3f0b3d68f9a 8.2.0 cited