Re: foreign table batch inserts

From: Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
To: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>, Manuel Kniep <m(dot)kniep(at)web(dot)de>
Cc: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: foreign table batch inserts
Date: 2016-05-26 11:25:56
Message-ID: 68df64a5-328f-b571-6d0b-9573280ae931@lab.ntt.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2016/05/18 7:08, Michael Paquier wrote:
> On Wed, May 18, 2016 at 6:00 AM, Manuel Kniep <m(dot)kniep(at)web(dot)de> wrote:
>> I realized that inserts into foreign tables are only done row by row.
>> Consider copying data from one local table to a foreign table with
>>
>> INSERT INTO foreign_table(a,b,c) SELECT a,b,c FROM local_table;
>>
>> When the foreign server is for example in another datacenter with long latency,
>> this as an enormous performance trade off.

> I am adding Fujita-san in the loop here, he is
> quite involved with postgres_fdw these days so perhaps he has some
> input to offer.

Honestly, I didn't have any idea for executing such an insert
efficiently, but I was thinking to execute an insert into a foreign
table efficiently, by sending the whole insert to the remote server, if
possible. For example, if the insert is of the form:

INSERT INTO foreign_table(a,b,c) VALUES (1, 2, 3), (4, 5, 6) or
INSERT INTO foreign_table(a,b,c) SELECT a,b,c FROM foreign_table2

where foreign_table and foreign_table2 belong to the same foreign
server, then we could send the whole insert to the remote server.

Wouldn't that make sense?

Best regards,
Etsuro Fujita

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2016-05-26 11:38:31 Re: [sqlsmith] Failed assertion in parallel worker (ExecInitSubPlan)
Previous Message Amit Kapila 2016-05-26 10:01:36 Re: [HACKERS] Re: [HACKERS] Re: [HACKERS] Re: [HACKERS] Windows service is not starting so there’s message in log: FATAL: "could not create shared memory segment “Global/PostgreSQL.851401618”: Permission denied”