Thread: Re: surprisingly slow creation of gist index used in exclude constraint

Chris Withers <chris@withers.org> writes:
>       It has 4.1 million rows in it and while importing the data only
>       takes a couple of minutes, when I did a test load into the new
>       cluster, building the mkt_profile_period_col1_col4_col2_chan_excl
>       index for the exclude constraint took 15 hours.

Don't recall for sure, but I think GIST index build is sensitive
to the maintenance_work_mem setting; did you have that cranked up?

>     - failing that, what can I do to import and then create the index
>       in the background?

CREATE INDEX CONCURRENTLY, perhaps.

            regards, tom lane



Re: surprisingly slow creation of gist index used in excludeconstraint

From
Chris Withers
Date:
On 14/05/2020 21:31, Tom Lane wrote:
> Chris Withers <chris@withers.org> writes:
>>        It has 4.1 million rows in it and while importing the data only
>>        takes a couple of minutes, when I did a test load into the new
>>        cluster, building the mkt_profile_period_col1_col4_col2_chan_excl
>>        index for the exclude constraint took 15 hours.
> 
> Don't recall for sure, but I think GIST index build is sensitive
> to the maintenance_work_mem setting; did you have that cranked up?

postgres=# show maintenance_work_mem;
  maintenance_work_mem
----------------------
  2GB
(1 row)

Would it be worth turning that up more? The server has ~130GB memory.

>>      - failing that, what can I do to import and then create the index
>>        in the background?
> 
> CREATE INDEX CONCURRENTLY, perhaps.

How would I bring this into play with respect to the dump and load 
cycle? Is there an option to pg_dump or something else I should use or 
is this a case of awk'ing the create index in the dump?

Chris