BUG #13484: Performance problem with logical decoding

Поиск
Список
Период
Сортировка
От olivier.gosseaume@free.fr
Тема BUG #13484: Performance problem with logical decoding
Дата
Msg-id 20150703090217.1190.63940@wrigleys.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #13484: Performance problem with logical decoding  (Andres Freund <andres@anarazel.de>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      13484
Logged by:          Olivier Gosseaume
Email address:      olivier.gosseaume@free.fr
PostgreSQL version: 9.4.4
Operating system:   Windows 7 64 bits (dev system)
Description:

Problem: when a transaction involve more than 4095 operations, logical
decoding on the receiver end become very very slow.

Repro :
Open two psql sessions 1 and 2

On session 1 :
Prepare :
CREATE TABLE data(id serial primary key, data text);

On session 2 (receiver) :
Prepare :
\timing on
SELECT pg_create_logical_replication_slot('my_slot','test_decoding');

Run :
On session 1 : insert into data (data) values (generate_series(1,4095));
On session 2 : select pg_logical_slot_get_changes('my_slot', NULL, NULL);
--> returns in 80mS (plenty fast)

On session 1 : insert into data (data) values (generate_series(1,4095)); -->
repeat this 10 times to insert 40950 rows
On session 2 : select pg_logical_slot_get_changes('my_slot', NULL, NULL);
--> returns in 380mS (plenty fast)

Now the problem :
On session 1 : insert into data (data) values (generate_series(1,4096));
On session 2 : select pg_logical_slot_get_changes('my_slot', NULL, NULL);
--> returns in 4204mS (ie 52x times slower than "normal")

On session 1 : insert into data (data) values (generate_series(1,40950));
On session 2 : select pg_logical_slot_get_changes('my_slot', NULL, NULL);
--> returns in 34998mS (ie 92x times slower than "normal")

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

Предыдущее
От: sammit.karekar@ril.com
Дата:
Сообщение: BUG #13483: Installation fails
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #13485: JSONB To recordset not working with CamelCase