Re: Logical replication and multimaster

Поиск
Список
Период
Сортировка
От Craig Ringer
Тема Re: Logical replication and multimaster
Дата
Msg-id CAMsr+YFf4hA=hLTe2hvPZ95-Fxf3bT80-_8CWwrDpDzva3LTOw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Logical replication and multimaster  (Robert Haas <robertmhaas@gmail.com>)
Ответы Re: Logical replication and multimaster  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers
On 10 December 2015 at 03:19, Robert Haas <robertmhaas@gmail.com> wrote:
On Sun, Dec 6, 2015 at 10:24 PM, Craig Ringer <craig@2ndquadrant.com> wrote:
 
> * A way to securely make a libpq connection from a bgworker without messing
> with passwords etc. Generate one-time cookies, sometihng like that.

Why would you have the bgworker connect to the database via TCP
instead of just doing whatever it wants to do directly?


pg_dump and pg_restore, mainly, for copying the initial database state.

PostgreSQL doesn't have SQL-level function equivalents, nor pg_get_tabledef() etc, and there's been strong opposition to adding anything of the sort when it's been raised before. We could read a dump in via pg_restore's text conversion and run the appropriate queries over the SPI, doing the query splitting, COPY parsing and loading, etc ourselves in a bgworker. It'd be ugly and duplicate a lot, but it'd work. However, it wouldn't be possible to do restores in parallel that way, and that's necessary to get good restore performance on big DBs. For that we'd also basically rewrite pg_restore's parallel functionality using a bgworker pool. 

The alternative is a massive rewrite of pg_dump and pg_restore to allow them to be used as libraries, and let them use either libpq or the SPI for queries, presumably via some level of abstraction layer. As well as further abtraction for pipelining parallel work. Not very practical, and IIRC whenever library-ifing pg_dump and pg_restore has been discussed before it's been pretty firmly rejected.

Also, parallelism at apply time. There are two ways to do apply work in parallel - a pool of bgworkers that each use the SPI, or using regular backends managing async libpq connections. At this point I think Konstantin's approach, with a bgworker pool that processes a work queue, is probably better for this, and want to explore making that a re-usable extension for 9.5 and possibly a core part of 9.6 or 9.7.

So it's mainly for pg_restore.

--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Aleksander Alekseev
Дата:
Сообщение: Re: Patch: ResourceOwner optimization for tables with many partitions
Следующее
От: Andres Freund
Дата:
Сообщение: Re: Logical replication and multimaster