Назад | Перейти на главную страницу

Решить проблему раздувания таблицы PostgreSQL, не влияя на чтение / запись?

У меня есть большая таблица postgresql, которая, как мне кажется, начала раздуваться, и я хотел бы это исправить. Обычно я мог бы VACUUM FULL или CLUSTER, но мне интересно, смогу ли я исправить раздувание, не влияя на производительность чтения / записи.

Если есть раздутый индекс, я могу (вручную) создать новый индекс одновременно, который индексирует те же вещи, что и старый, но с другим именем, и когда он будет создан, я могу удалить старый, раздутый. Это позволяет мне исправить раздувание индекса с минимальным влиянием на производственное использование (поскольку там всегда есть индекс, а чтение и запись не блокируются).

Есть ли такой подход, который работал бы для таблиц? Я мог бы CREATE TABLE newtable LIKE old_bloated_table INCLUDING ..., который создаст таблицу заново. Затем сбросьте и переименуйте. Но данные могли быть рассинхронизированы. Есть ли способ гарантировать, что данные между таблицами будут одинаковыми? (В случае индекса индекс всегда будет синхронизирован с таблицей).