Re: PoC: Partial sort
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Andreas Karlsson <andreas@proxel.se>
Cc: David Rowley <dgrowleyml@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>,
Andres Freund <andres@2ndquadrant.com>,
Martijn van Oosterhout <kleptog@svana.org>
Date: 2014-01-13T18:01:20Z
Lists: pgsql-hackers
Attachments
- partial-sort-5.patch.gz (application/x-gzip) patch
On Tue, Dec 31, 2013 at 5:41 AM, Andreas Karlsson <andreas@proxel.se> wrote: > On 12/29/2013 08:24 AM, David Rowley wrote: > >> If it was possible to devise some way to reuse any >> previous tuplesortstate perhaps just inventing a reset method which >> clears out tuples, then we could see performance exceed the standard >> seqscan -> sort. The code the way it is seems to lookup the sort >> functions from the syscache for each group then allocate some sort >> space, so quite a bit of time is also spent in palloc0() and pfree() >> >> If it was not possible to do this then maybe adding a cost to the number >> of sort groups would be better so that the optimization is skipped if >> there are too many sort groups. >> > > It should be possible. I have hacked a quick proof of concept for reusing > the tuplesort state. Can you try it and see if the performance regression > is fixed by this? > > One thing which have to be fixed with my patch is that we probably want to > close the tuplesort once we have returned the last tuple from ExecSort(). > > I have attached my patch and the incremental patch on Alexander's patch. Thanks. It's included into attached version of patch. As wall as estimation improvements, more comments and regression tests fix. ------ With best regards, Alexander Korotkov.
Commits
-
Implement Incremental Sort
- d2d8a229bc58 13.0 landed
-
Improve memory management for external sorts.
- 0011c0091e88 9.6.0 cited