Обсуждение: Understanding sort's memory/disk usage

Поиск
Список
Период
Сортировка

Understanding sort's memory/disk usage

От
Adam Rich
Дата:
Hello,
Please reference these explain plans.  This is Pg 8.4.1

http://explain-analyze.info/query_plans/4032-query-plan-2745
http://explain-analyze.info/query_plans/4033-query-plan-2746

First, could somebody explain what is leading the first query to choose
a different plan that's much slower?  In the first plan only, this
expression is in the select & group by:

s.store_num || ' - ' || s.title

These are both non-null varchar fields.  Both have a unique index.

Second, why would it choose to sort on disk for what appears to be ~32MB
of data, when my work_mem and temp_buffers are both 64 MB each?

If I increase work_mem and temp_buffers to 128 MB, I get a faster plan:

http://explain-analyze.info/query_plans/4034-query-plan-2747

But it's only reporting 92kb of memory used? Why don't I see numbers
between 64 MB and 128 MB for both the on-disk and in-memory plans?

Thanks,
Adam









Re: Understanding sort's memory/disk usage

От
Tom Lane
Дата:
Adam Rich <adam.r@sbcglobal.net> writes:
> Please reference these explain plans.  This is Pg 8.4.1

> http://explain-analyze.info/query_plans/4032-query-plan-2745
> http://explain-analyze.info/query_plans/4033-query-plan-2746

> First, could somebody explain what is leading the first query to choose
> a different plan that's much slower?

I think it's rejecting the HashAggregate plan because, with the
estimated-wider rows, the hash table is estimated to exceed work_mem.

> Second, why would it choose to sort on disk for what appears to be ~32MB
> of data, when my work_mem and temp_buffers are both 64 MB each?

The on-disk representation is more compact for various reasons.

> But it's only reporting 92kb of memory used? Why don't I see numbers
> between 64 MB and 128 MB for both the on-disk and in-memory plans?

You're not taking into account whether the sort is on pre-aggregation or
post-aggregation data.

            regards, tom lane