Re: reclaiming space from heavily used tables?

Поиск
Список
Период
Сортировка
От Jeremy Finzel
Тема Re: reclaiming space from heavily used tables?
Дата
Msg-id CAMa1XUiUAXeugw2e9we9o9r+Ucg5_L38rZ9Zok4WdX4wYPokMg@mail.gmail.com
обсуждение исходный текст
Ответ на reclaiming space from heavily used tables?  (Rob Nikander <rob.nikander@gmail.com>)
Ответы Re: reclaiming space from heavily used tables?  (Alvaro Herrera <alvherre@alvh.no-ip.org>)
Список pgsql-general


On Mon, Dec 18, 2017 at 1:03 PM, Rob Nikander <rob.nikander@gmail.com> wrote:
Hi,

I've got a large table from which I'd like to completely reclaim space. I read the docs and it sounds like I can’t run `vacuum full`, because this table is accessed constantly and can’t have downtime. Assuming that’s true, what do you think of the following idea? Is there a better alternative?

1. Replace the table T with two tables T1 and T2 and a view T that is `select * from T1 union T2`.
2. Write only to T1, and slowly move records from T2 to T1.
3. When T2 is empty, redefine the view T to be simply `select * from T1`.
4. Recreate or vacuum full T2, so space is fully reclaimed.
5. Redefine view as the union select and repeat process going other direction from T1 to T2, as needed.

I guess one question is whether I can do 1 and 3 (renaming tables, redefining views) atomically without disturbing concurrent select queries.


This is what you want: https://github.com/reorg/pg_repack

This has been around for many years and is a very trusted extension (when will it be in core????).
 
Rob



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

Предыдущее
От: Rob Nikander
Дата:
Сообщение: reclaiming space from heavily used tables?
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: reclaiming space from heavily used tables?