Низкая производительность расширения postgres_fdw - PullRequest
0 голосов
/ 22 апреля 2020

Мне нужно периодически копировать данные из базы данных TMP в удаленную базу данных PROD с некоторыми изменениями данных в столбцах. Когда я использую расширение postgres_fdw из базы данных PROD (с отображением внешней схемы), процесс копирования миллиона записей длится 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 ?

Я должен выполнить SQL команды в базе данных TMP. Базы данных TMP и PROD находятся в этих же версиях (10).

1 Ответ

1 голос
/ 22 апреля 2020

Первый оператор будет эффективно выполнять много небольших вставок, хотя и с подготовленным оператором, поэтому у вас не будет лишних затрат на планирование каждый раз. Таким образом, между двумя серверами будет больше поездок, что, вероятно, и является причиной различий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...