Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 pg_repack своим способом индексы перестраивает или стандартным?  [new]
lr2
Member

Откуда:
Сообщений: 136
Добрый день.

Скажите, pg_repack как индексы перестраивает?

Для каждого создает конкурентно и оригинал дропает или там какой-то свой метод у него?
10 фев 21, 12:55    [22278751]     Ответить | Цитировать Сообщить модератору
 Re: pg_repack своим способом индексы перестраивает или стандартным?  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1246
lr2,

Если говорим про репак таблицы - индексы строит без concurrently на новой таблице, заменяет одновременно и таблицу и все индексы.
Если говорим про --only-indexes - индексы строятся с concurrently, заменяются все одновременно, затем drop index concurrently https://github.com/reorg/pg_repack/blob/master/bin/pg_repack.c#L1911
10 фев 21, 14:34    [22278857]     Ответить | Цитировать Сообщить модератору
 Re: pg_repack своим способом индексы перестраивает или стандартным?  [new]
lr2
Member

Откуда:
Сообщений: 136
Melkij
lr2,

Если говорим про репак таблицы - индексы строит без concurrently на новой таблице, заменяет одновременно и таблицу и все индексы.
Если говорим про --only-indexes - индексы строятся с concurrently, заменяются все одновременно, затем drop index concurrently https://github.com/reorg/pg_repack/blob/master/bin/pg_repack.c#L1911



Спасибо за информацию.

А для первого способа получается какой доступный объем на диске надо иметь? Как таблица + индексы?
10 фев 21, 15:09    [22278897]     Ответить | Цитировать Сообщить модератору
 Re: pg_repack своим способом индексы перестраивает или стандартным?  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4581
lr2
Melkij
lr2,

Если говорим про репак таблицы - индексы строит без concurrently на новой таблице, заменяет одновременно и таблицу и все индексы.
Если говорим про --only-indexes - индексы строятся с concurrently, заменяются все одновременно, затем drop index concurrently https://github.com/reorg/pg_repack/blob/master/bin/pg_repack.c#L1911



Спасибо за информацию.

А для первого способа получается какой доступный объем на диске надо иметь? Как таблица + индексы?


как таблица + индексы + запас на wal и временные файлы на построение индексов + еще одна копия таблицы если у вас logical replication живет на базе...


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
10 фев 21, 15:43    [22278932]     Ответить | Цитировать Сообщить модератору
 Re: pg_repack своим способом индексы перестраивает или стандартным?  [new]
lr2
Member

Откуда:
Сообщений: 136
Maxim Boguk
lr2
пропущено...



Спасибо за информацию.

А для первого способа получается какой доступный объем на диске надо иметь? Как таблица + индексы?


как таблица + индексы + запас на wal и временные файлы на построение индексов + еще одна копия таблицы если у вас logical replication живет на базе...


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru



Ого, получается таблица, например 1Tb, индексы 0.3Tb в итоге понадобится:

как таблица (1) + индексы (0.3)+ запас на wal (примерно 0.2) и временные файлы на построение индексов (0.3) + еще одна копия таблицы если у вас logical (не совсем понял, но логической репликации нет)

1.8 Тб получается приблизительно потребуется?
10 фев 21, 15:47    [22278935]     Ответить | Цитировать Сообщить модератору
 Re: pg_repack своим способом индексы перестраивает или стандартным?  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4581
lr2


Ого, получается таблица, например 1Tb, индексы 0.3Tb в итоге понадобится:

как таблица (1) + индексы (0.3)+ запас на wal (примерно 0.2) и временные файлы на построение индексов (0.3) + еще одна копия таблицы если у вас logical (не совсем понял, но логической репликации нет)

1.8 Тб получается приблизительно потребуется?


Да как то так...
а если вы используете еще -o, --order-by=COLUMNS - то еще место под ЕЩЕ одну полную копию таблицы в временных файлов для сортировки (но без индексов).


как альтернативу можно попробовать разработку которую я начал много лет назад
pgcompacttable
https://github.com/dataegret/pgcompacttable

которая работает принципиально иным образом и не требует дополнительного места почти
но конечно работает сильно медленнее (впрочем спешить особо смысла в этом деле нет).


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru

Сообщение было отредактировано: 10 фев 21, 16:49
10 фев 21, 16:38    [22278980]     Ответить | Цитировать Сообщить модератору
 Re: pg_repack своим способом индексы перестраивает или стандартным?  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4581
lr2,

А вы уверенны что у вас bloat на таблице большой?
что показывает pgstattuple_approx по ней?


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
10 фев 21, 16:39    [22278982]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить