CREATE TABLE large_test (id int primary key, num1 bytea, num2 bytea, num3 double precision );
复制代码
3.创建订阅;设置binary 参数为true 而且 copy_data 参数为 on 用于初始数据传输。
CREATE SUBSCRIPTION sub CONNECTION 'host=ec2-44-209-69-249.compute-1.amazonaws.com user=admin password=password dbname=demo' PUBLICATION pub WITH (copy_data=on, binary=true);
复制代码
4. 创建以下函数,对从发布者到订阅者的初始数据拷贝进行计时:
CREATE OR REPLACE PROCEDURE wait_for_rep() LANGUAGE plpgsql AS $$ BEGIN WHILE (SELECT count(*) != 0 FROM pg_subscription_rel WHERE srsubstate <> 'r') LOOP COMMIT; END LOOP; END; $$;
复制代码
5. 调用函数来计算传输时间:
\timing
call wait_for_rep();
复制代码
Results
如果没有binary load (binary set to false), 需要383884.913 ms(06:23.885)才能完成事务并在订阅者节点上应用更改。
如果利用 binary load (binary set to true),需要267149.655 ms(04:27.150)才能完成事务并在订阅者节点上应用更改。