Re: SP-GiST failing to complete SP-GiST index build

Поиск
Список
Период
Сортировка
От Peter Geoghegan
Тема Re: SP-GiST failing to complete SP-GiST index build
Дата
Msg-id CAH2-Wz=CQRhjVjZ5n_vPYpNZATVhdPcEkDkbZ0NXKBS3q8Q4Vg@mail.gmail.com
обсуждение исходный текст
Ответ на SP-GiST failing to complete SP-GiST index build  ("Jonathan S. Katz" <jkatz@postgresql.org>)
Ответы Re: SP-GiST failing to complete SP-GiST index build  (Peter Geoghegan <pg@bowt.ie>)
Список pgsql-hackers
On Sun, May 27, 2018 at 12:45 PM, Jonathan S. Katz <jkatz@postgresql.org> wrote:
> Next, see bad.sql.  1.2MM sparsely clustered rows inserted, GiST indexes
> builds in about 30s on my machine.  SP-GiST does not build at all, or at
> least I have been composing this email for about 10 minutes since I kicked
> off my latest and it has yet to terminate.
>
> I can understand this being an extreme case for SP-GiST as it’s better
> for data set that’s more densely clustered, but I wanted to provide
> this info to rule out whether or not this is a bug.

While I'm no SP-GiST expert, I strongly suspect that you've identified
a real bug here. Your test case has been running on my development
machine for 20 minutes now (this is server class hardware).

I ran perf with your testcase, and I see that the majority of
instructions are executed within these functions:

  22.88%  postgres  postgres            [.] spgdoinsert
  12.98%  postgres  postgres            [.] range_deserialize
  11.44%  postgres  postgres            [.] FunctionCall2Coll
  10.40%  postgres  postgres            [.] heap_tuple_untoast_attr
   8.62%  postgres  postgres            [.] spgExtractNodeLabels
   5.92%  postgres  postgres            [.] getQuadrant
   4.90%  postgres  postgres            [.] AllocSetAlloc

spgdoinsert() contains the following comment:

/*
 * Bail out if query cancel is pending.  We must have this somewhere
 * in the loop since a broken opclass could produce an infinite
 * picksplit loop.
 */
CHECK_FOR_INTERRUPTS();

Perhaps the problem is in the range type SP-GiST opclass support code
- it could have this exact picksplit infinite loop problem. That's
perfectly consistent with what we see here.

--
Peter Geoghegan


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Dmitry Dolgov
Дата:
Сообщение: Re: jsonb iterator not fully initialized
Следующее
От: Peter Geoghegan
Дата:
Сообщение: Re: SP-GiST failing to complete SP-GiST index build