pgsql: Improve memory space management in tuplesort and tuplestore. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Improve memory space management in tuplesort and tuplestore.
Date
Msg-id E1Tvtxg-0006wp-KL@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Improve memory space management in tuplesort and tuplestore.

The code originally just doubled the size of the tuple-pointer array so
long as that would fit in allowedMem.  This could result in failing to use
as much as half of allowedMem, if (as is typical) the last doubling attempt
didn't quite fit.  Worse, we might double the array size but be unable to
use most of the added slots, because there was no room left within the
allowedMem limit for tuples the slots should point to.  To fix, double only
so long as we've used less than half of allowedMem in total.  Then do one
more array enlargement, but scale it based on total memory consumption so
far.  This will work nicely as long as the average tuple size is reasonably
stable, and in any case should be better than the old method.

This change will result in large sort operations consuming a larger
fraction of work_mem than they typically did in the past.  The release
notes should mention that users may want to revisit their work_mem
settings, if they'd tuned those settings based on the old behavior of
sorting.

Jeff Janes, reviewed by Peter Geoghegan and Robert Haas

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/8ae35e91807508872cabd3b0e8db35fc78e194ac

Modified Files
--------------
src/backend/utils/sort/tuplesort.c  |  118 ++++++++++++++++++++++++-----
src/backend/utils/sort/tuplestore.c |  142 +++++++++++++++++++++++++++++++----
2 files changed, 226 insertions(+), 34 deletions(-)


pgsql-committers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: pgsql: Fix a couple of error-handling bugs in the xlogreader patch.
Next
From: Heikki Linnakangas
Date:
Subject: pgsql: Make pg_receivexlog and pg_basebackup -X stream work across time