Re: Archiving Data to Another DB?
От | Adrian Klaver |
---|---|
Тема | Re: Archiving Data to Another DB? |
Дата | |
Msg-id | ae18f69c-8ae3-79e3-517a-719bd7700643@aklaver.com обсуждение исходный текст |
Ответ на | Re: Archiving Data to Another DB? (Don Seiler <don@seiler.us>) |
Ответы |
Re: Archiving Data to Another DB?
|
Список | pgsql-general |
On 04/11/2018 11:13 AM, Don Seiler wrote: > On Wed, Apr 11, 2018 at 12:58 PM, Adrian Klaver > <adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>> wrote: > > "F.33.3. Transaction Management > > During a query that references any remote tables on a foreign > server, postgres_fdw opens a transaction on the remote server if one > is not already open corresponding to the current local transaction. > The remote transaction is committed or aborted when the local > transaction commits or aborts. Savepoints are similarly managed by > creating corresponding remote savepoints. > > ..." > > > Interesting, I'll work on a test case later! > > I may be missing something, but why not reverse your original set up? > Assuming transactional behavior works as expected something like: > > 1) Setup postgres_fdw in main database. > > 2) Create FOREIGN TABLE pointing to table in archive database. > > 3) INSERT INTO/SELECT from main table to archive table. > > 4) DELETE FROM main table. > > > I had considered this as well, as this would allow me to rollback the > delete (assuming my intel on postgres_fdw transactions was correct, > which it may not be after all). I wondered if a remote insert woultd be > broken up into individual inserts like the remote delete was, as that > would be equally unappealing for the same reasons. But obviously worth > confirming. A test case here confirms it sends individual INSERTS: test_(postgres)# insert into fdw_test_table select * from fdw_test; INSERT 0 3 Where fdw_test_table is the remote table and fdw_test is the local one. postgres-2018-04-11 11:29:23.812 PDT-0LOG: statement: insert into fdw_test_table select * from fdw_test; postgres-2018-04-11 11:29:23.812 PDT-0LOG: execute pgsql_fdw_prep_2: INSERT INTO public.fdw_test_rcv(id, fld_1, fld_2) VALUES ($1, $2, $3) postgres-2018-04-11 11:29:23.812 PDT-0DETAIL: parameters: $1 = '1', $2 = 'one', $3 = 't' postgres-2018-04-11 11:29:23.813 PDT-10140LOG: execute pgsql_fdw_prep_2: INSERT INTO public.fdw_test_rcv(id, fld_1, fld_2) VALUES ($1, $2, $3) postgres-2018-04-11 11:29:23.813 PDT-10140DETAIL: parameters: $1 = '2', $2 = 'two', $3 = 'f' postgres-2018-04-11 11:29:23.813 PDT-10140LOG: execute pgsql_fdw_prep_2: INSERT INTO public.fdw_test_rcv(id, fld_1, fld_2) VALUES ($1, $2, $3) postgres-2018-04-11 11:29:23.813 PDT-10140DETAIL: parameters: $1 = '3', $2 = 'three', $3 = 'f' So much for that idea(: > > Don. > > -- > Don Seiler > www.seiler.us <http://www.seiler.us> -- Adrian Klaver adrian.klaver@aklaver.com
В списке pgsql-general по дате отправления: