Re: Forced external sort? - Mailing list pgsql-general

From Tomas Vondra
Subject Re: Forced external sort?
Date
Msg-id 55F539C4.6090902@2ndquadrant.com
Whole thread Raw
In response to Re: Forced external sort?  (Jeff Janes <jeff.janes@gmail.com>)
List pgsql-general

On 09/13/2015 01:53 AM, Jeff Janes wrote:
> On Fri, Sep 11, 2015 at 11:45 AM, <rolf@winmutt.com
> <mailto:rolf@winmutt.com>> wrote:
>
>     I've got a poorly indexed query and was attempting a quick work
>     around in production by increasing work_mem when it was called.
>     EXPLAIN ANALYZE is telling me this:
>
>     Sort Method: external sort  Disk: 1253824kB
>
>
>     So I set the work_mem to 2gb, still going to disk. I read Tom's
>     suggestion here
>     (http://www.postgresql.org/message-id/1936.1298394374@sss.pgh.pa.us)
>     and went all the way up to 92G or work_mem.
>
>     Did more googling and found this reference
>     (http://www.postgresql.org/message-id/CAMkU=1w2y87NJueqwN8-HK2KDb4UOihFAJXpO1NZ3EkHZvBmmQ@mail.gmail.com)
>     to a 1G sort limit that is going to be removed in 9.3.
>
>     Am I possibly experiencing the same issue even though I am on 9.3.1?
>     Was it really not fixed until 9.4?
>     (http://www.postgresql.org/message-id/557C7213.8000704@joeconway.com)
>
>
>
> Only the rounding issue was removed in 9.3 so that it could use the full
> 1GB, (rather than getting to 512MB plus a few bytes, and then deciding
> it didn't have room to double).  The 1G limit itself was not removed
> until 9.4.
>
> Note that these limits were not on the total amount of data being
> sorted, but on the size of the array of row headers, and so limits the
> number of rows, regardless of the size of the rows.

Additional thing to consider is that the two sort methods (in-memory and
on-disk) use different representations of the data, and the on-disk is
much more compact. It's not uncommon to see 1:3 ratio, i.e. when
external (on-disk) sort needs 100MB, the in-memory sort would need 300MB.

So when the on-disk sort needs 1253824kB, you'll probably need ~4GB
work_mem to actually do that in memory.

regards

--
Tomas Vondra                   http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


pgsql-general by date:

Previous
From: Jeff Janes
Date:
Subject: Re: Forced external sort?
Next
From: Dale Seaburg
Date:
Subject: Ubuntu installed postgresql password failure