details.txt
text/plain
Filename: details.txt
Type: text/plain
Part: 3
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 serial primary key,
num1 bigint,
num2 double precision,
num3 double precision
);
-- create publication
create publication pub for table large_test;
-- create subscription
CREATE SUBSCRIPTION sub CONNECTION 'port=5432 dbname=postgres' PUBLICATION pub with(streaming);
Then set synchronous replication and restart publisher server.
-- case: bulk insert
EXPLAIN (ANALYZE, BUFFERS) INSERT INTO large_test (num1, num2, num3)
SELECT round(random()*10), random(), random()*142
FROM generate_series(1, 5000000) s(i);
-- case: rollback to savepoint
INSERT INTO large_test (num1, num2, num3)
SELECT round(random()*10), random(), random()*142
FROM generate_series(1, 600000) s(i);"
BEGIN;
UPDATE large_test SET num1 = num1 + 1, num2 = num2 + 1, num3 = num3 + 1;
SAVEPOINT s1;
UPDATE large_test SET num1 = num1 + 1, num2 = num2 + 1, num3 = num3 + 1;
SAVEPOINT s2;
UPDATE large_test SET num1 = num1 + 1, num2 = num2 + 1, num3 = num3 + 1;
ROLLBACK TO SAVEPOINT s2;
END;