Re: BUG #13484: Performance problem with logical decoding

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: BUG #13484: Performance problem with logical decoding
Дата
Msg-id 20150706204138.GC340@alap3.anarazel.de
обсуждение исходный текст
Ответ на Re: BUG #13484: Performance problem with logical decoding  (olivier.gosseaume@free.fr)
Ответы Re: BUG #13484: Performance problem with logical decoding  (olivier.gosseaume@free.fr)
Re: BUG #13484: Performance problem with logical decoding  (Marko Tiikkaja <marko@joh.to>)
Список pgsql-bugs
Hi,

On 2015-07-06 19:29:30 +0200, olivier.gosseaume@free.fr wrote:
> Just after having submitted the bug report, i saw that when a
> transaction have 4096 or more operations (inserts for example), I see
> postgres generating files in pg_repslot/my_slot directory. Is that
> what you call "spilling to disk"?

Yes.

> To be more concise :
> - ONE transaction with 4095 operations -> consumed in 80mS
> - TEN transactions with 4095 operations each (so 40950 operations) -> 380mS (which as you said is very good -less
thanlinear growth-) 
> - ONE transaction with 4096 operations -> consumed in 4204mS (ouch ...). I confirm there are only 4096 changes in one
transaction
> - TEN transactions with 4095 operations each (so 40950 operations) -> 34998mS, ouch again

FWIW, I can't reproduce those results at all. I just tried, and for me
all results are 34ms, 121ms, 149ms, 374ms. When using the streaming
interface there's no discernible delays at all.

> I need some sort of change data capture mechanism (CDC) to detect
> changes on data (async is ok for me as long as i get very low
> latency). I could use triggers but performance would suffer. Reading
> the WAL log seems like it could be a good approach.

Right, that sounds pretty typical.

> I also tried pg_recvlogical feeding a file, but got the exact same
> results so i'm stuck.

Are you stopping pg_recvlogical between the runs, or are you letting it
run? The point of using it is that it's a streaming, i.e. that you do
not need to pay to "startup" costs of logical decoding, which can be
noticeable.

> What is observe is that the spilling occurs, and
> when the .snap file is created then pg_recvlogical will consume data
> but it does take a long time exactly the same time as
> pg_logical_slot_get_changes in fact.

Another possibility is that there's some windows specific problem here.

> BTW there is also a bug in pg_recvlogical with option -f - (output to
> stdout), pg_recvlogical tries to flush with fsync which does not work
> on windows and display an error message.

Uh, that should obviously not be the case. Thanks for the report, will
fix.

Greetings,

Andres Freund

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

Предыдущее
От: olivier.gosseaume@free.fr
Дата:
Сообщение: Re: BUG #13484: Performance problem with logical decoding
Следующее
От: Andres Freund
Дата:
Сообщение: Re: BUG #13484: Performance problem with logical decoding