У меня есть большая таблица postgresql, которая, как мне кажется, начала раздуваться, и я хотел бы это исправить. Обычно я мог бы VACUUM FULL
или CLUSTER
, но мне интересно, смогу ли я исправить раздувание, не влияя на производительность чтения / записи.
Если есть раздутый индекс, я могу (вручную) создать новый индекс одновременно, который индексирует те же вещи, что и старый, но с другим именем, и когда он будет создан, я могу удалить старый, раздутый. Это позволяет мне исправить раздувание индекса с минимальным влиянием на производственное использование (поскольку там всегда есть индекс, а чтение и запись не блокируются).
Есть ли такой подход, который работал бы для таблиц? Я мог бы CREATE TABLE newtable LIKE old_bloated_table INCLUDING ...
, который создаст таблицу заново. Затем сбросьте и переименуйте. Но данные могли быть рассинхронизированы. Есть ли способ гарантировать, что данные между таблицами будут одинаковыми? (В случае индекса индекс всегда будет синхронизирован с таблицей).