Re: doubts - Mailing list pgsql-admin

From Scott Ribe
Subject Re: doubts
Date
Msg-id 9493A23B-213C-4479-82FD-1AAE18127655@elevated-dev.com
Whole thread Raw
In response to doubts  (Thomaz Luiz Santos <thomaz.santos@gmail.com>)
Responses Re: doubts  (Bo Victor Thomsen <bo.victor.thomsen@gmail.com>)
List pgsql-admin
On Aug 3, 2022, at 5:06 PM, Thomaz Luiz Santos <thomaz.santos@gmail.com> wrote:
>
> I have one question: is it possible to minimize the downtime for this process ( because this table is large. ), using
anotherstrategy, like one view and updating the view ?  

Yes, using a view and redefining it after the new data is loaded would work. You could also:

- load new data into a new table
- begin transaction
- drop old table
- rename new table
- commit

The drop/rename dance executes very quickly because it's just manipulating catalog entries--with the caveat that
droppingthe table requires an exclusive lock for the obvious reason, so if you have a long-running transaction using
thattable, you can wind up waiting for it. 

Look at the docs for CREATE TABLE and the "LIKE" option, which gives you a shortcut to creating a table with the
structureof an existing one. 

One peculiarity you might or might not care about: when you create your indexes on the new table, they will be named
basedon that table's name, and when you rename it the indexes don't get renamed. Personally, I am OK with
"my_table_temp_some_idx"on "my_table", but if this offends your sensibilities, you can always rename the indexes ;-)
andconstraints ;-) 





pgsql-admin by date:

Previous
From: "David G. Johnston"
Date:
Subject: Re: doubts
Next
From: Bo Victor Thomsen
Date:
Subject: Re: doubts