Re: POC: postgres_fdw insert batching
Tomas Vondra <tomas.vondra@2ndquadrant.com>
From: Tomas Vondra <tomas.vondra@2ndquadrant.com>
To: "Andrey V. Lepikhov" <a.lepikhov@postgrespro.ru>
Cc: pgsql-hackers@postgresql.org
Date: 2020-07-12T00:11:01Z
Lists: pgsql-hackers
On Fri, Jul 10, 2020 at 09:28:44AM +0500, Andrey V. Lepikhov wrote: >On 6/28/20 8:10 PM, Tomas Vondra wrote: >>Now, the primary reason why the performance degrades like this is that >>while FDW has batching for SELECT queries (i.e. we read larger chunks of >>data from the cursors), we don't have that for INSERTs (or other DML). >>Every time you insert a row, it has to go all the way down into the >>partition synchronously. > >You added new fields into the PgFdwModifyState struct. Why you didn't >reused ResultRelInfo::ri_CopyMultiInsertBuffer field and >CopyMultiInsertBuffer machinery as storage for incoming tuples? > Because I was focused on speeding-up inserts, and that is not using CopyMultiInsertBuffer I think. I agree the way the tuples are stored may be improved, of course. regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Fix tuple routing to initialize batching only for inserts
- 927f453a9410 14.0 landed
-
Fix pointer type in ExecForeignBatchInsert SGML docs
- c15283ff429b 14.0 landed
-
Fix initialization of FDW batching in ExecInitModifyTable
- 920f853dc948 14.0 landed
-
Implement support for bulk inserts in postgres_fdw
- b663a4136331 14.0 landed