postgres_fdw扩展程序的低性能

问题描述 投票:0回答:1

我需要定期对数据进行修改,并将数据从TMP数据库复制到远程PROD数据库。当我使用PROD数据库中的postgres_fdw扩展名(带有映射外部模式)时,复制一百万条记录的过程持续6分钟。

insert into prod.foreign_schema.foreign_table 
(select * from tmp.public.table limit 1000000);

但是,当我使用dblink从PROD数据库复制同一表时(SQL在PROD数据库上运行,而不是在TEMP上运行,该过程持续20秒。

insert into prod.public.table 
(select * from dblink('host=192.1... port=5432 dbname=... user=… password=…. connect_timeout=2', 'select * from tmp.production.table limit 1000000') as tab (id integer…..)
);

如何优化和缩短从TEMP数据库复制数据的过程?

我必须在TMP数据库上运行SQL命令。TMP和PROD数据库具有相同的版本(10)。

postgresql dblink postgres-fdw
1个回答
1
投票

第一条语句将有效地运行许多小插入,尽管有一条预准备的语句,所以您不必每次都有计划开销。因此,您将在两台服务器之间进行更多往返,这可能是造成差异的原因。

© www.soinside.com 2019 - 2024. All rights reserved.