details.txt

text/plain

Some parameters specified in postgresql.conf
=====================================================
shared_buffers = 8GB
checkpoint_timeout = 30min
max_wal_size = 20GB
min_wal_size = 10GB
autovacuum = off

Steps
=====================================================
-- create table in publisher and subscriber
CREATE TABLE large_test (
     id int primary key,
     num1 bigint,
     num2 double precision,
     num3 double precision
);

-- create publication
create publication pub for table large_test;

-- create subscription
-- HEAD:
CREATE SUBSCRIPTION sub CONNECTION 'port=5432 dbname=postgres' PUBLICATION pub with(streaming=on);
-- after applying patch:
CREATE SUBSCRIPTION sub CONNECTION 'port=5432 dbname=postgres' PUBLICATION pub with(streaming=parallel);

Then set synchronous replication and restart publisher server.

-- do bulk insert in publisher
\timing
EXPLAIN (ANALYZE, BUFFERS) INSERT INTO large_test (id, num1, num2, num3)
     SELECT i, round(random()*10), random(), random()*142
     FROM generate_series(1, 5000000) s(i);