Сжатие pg_toast на экземпляре RDS - PullRequest
       100

Сжатие pg_toast на экземпляре RDS

0 голосов
/ 05 декабря 2018

У меня есть экземпляр Postgres 9.6 RDS, и он растет на 1 ГБ в день.Мы сделали некоторые оптимизации для отношения, связанного с pg_toast, но размер pg_toast не меняется.

Автовакуум включен, но, так как автовакуум / VACUUM FREEZE не освобождают пространство, а VACUUM FULL делает эксклюзивную блокировку, я больше не уверен, какой подход лучше.

Данные в таблицеявляется ключевым для нашего пользовательского опыта, и хотя следование этому подходу имеет смысл, оно заберет данные, которые наши пользователи ожидают увидеть во время процесса полного вакуума.

Какие есть другие варианты здесь, чтобыshrink the pg_toast?

Вот некоторые данные о размерах таблицы.На первых двух изображениях видно, что отношение scoring_responsescore является отношением, связанным с pg_toast.

enter image description here enter image description here

Настройки автовакуума

enter image description here

Результаты текущего процесса автоочистки для этого конкретного pg_toast.Это может помочь.enter image description here

1 Ответ

0 голосов
/ 05 декабря 2018

VACUUM (FULL) это единственный метод, который PostgreSQL предоставляет для уменьшения размера таблицы.

Является ли раздутая таблица TOAST такой проблемой для вас?Доступ к таблицам TOAST всегда осуществляется через индекс TOAST, поэтому проблема с производительностью не должна быть проблемой.

Мне известны два проекта, которые обеспечивают реорганизацию таблиц с помощью только короткой блокировки ACCESS EXCLUSIVE, а именно pg_squeeze и pg_repack , но вы, вероятно, не сможете использовать их в базе данных Amazon RDS.

Чтобы не усугубить проблему, сначала нужно попытаться поднять *От 1013 * до 2000 для затронутой таблицы, и если это не помогает, уменьшите autovacuum_vacuum_cost_delay до 0. Вы можете использовать ALTER TABLE, чтобы изменить настройки для одной таблицы.

...