Re: Memory-Bounded Hash Aggregation
Peter Geoghegan <pg@bowt.ie>
On Mon, Feb 3, 2020 at 6:24 PM Jeff Davis <pgsql@j-davis.com> wrote: > And now I'm attaching another version of the main Hash Aggregation > patch to be applied on top of the logtape.c patch. Have you tested this against tuplesort.c, particularly parallel CREATE INDEX? It would be worth trying to measure any performance impact. Note that most parallel CREATE INDEX tuplesorts will do a merge within each worker, and one big merge in the leader. It's much more likely to have multiple passes than a regular serial external sort. Parallel CREATE INDEX is currently accidentally disabled on the master branch. That should be fixed in the next couple of days. You can temporarily revert 74618e77 if you want to get it back for testing purposes today. Have you thought about integer overflow in your heap related routines? This isn't as unlikely as you might think. See commit 512f67c8, for example. Have you thought about the MaxAllocSize restriction as it concerns lts->freeBlocks? Will that be okay when you have many more tapes than before? > Not a lot of changes from the last version; mostly some cleanup and > rebasing. But it's faster now with the logtape.c changes. LogicalTapeSetExtend() seems to work in a way that assumes that the tape is frozen. It would be good to document that assumption, and possible enforce it by way of an assertion. The same remark applies to any other assumptions you're making there. -- Peter Geoghegan
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