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

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

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

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

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

Связанный контент