pg_partman
pg_partman — расширение для управления партиционированными таблицами: автоматическое создание новых партиций, удаление старых, поддержание партиций по времени или по диапазону. ide99 предоставляет UI вместо ручного вызова partman_create_parent / partman_run_maintenance.
Зачем партиционировать
Когда таблица превышает ~100M строк, операции на ней (vacuum, индекс-билд, удаление старого) становятся болезненными. Партиционирование делит таблицу на куски (по дате, диапазону ID, hash) — каждый кусок поменьше, обрабатывается независимо.
Postgres поддерживает партиционирование нативно (PARTITION BY RANGE / LIST / HASH). pg_partman автоматизирует:
- Создание партиций впрок (например, на 30 дней вперёд)
- Удаление старых партиций по retention-политике
- Фоновое обслуживание
Активация
CREATE EXTENSION pg_partman;
В ide99 в Schema Browser у партиционированных таблиц (или таблиц-кандидатов) появляется панель Partman.
Создание partman-родителя
Если у вас обычная таблица и хотите её партиционировать:
- Создайте партиционированную родительскую таблицу:
CREATE TABLE events_p (
id BIGSERIAL,
event_at TIMESTAMPTZ NOT NULL,
payload JSONB
) PARTITION BY RANGE (event_at);
- В ide99 правый клик на
events_p → Configure with pg_partman.
- Заполните форму:
- Interval:
daily, weekly, monthly, yearly, custom interval
- Premake: сколько партиций впрок (default 4)
- Retention: автоматически удалять партиции старше N интервалов
- Retention keep table: при удалении сохранить как detached (для архива)
- Кнопка Apply вызовет
partman.create_parent().
Maintenance
partman.run_maintenance() нужно вызывать регулярно (cron или pg_cron). Он создаёт новые партиции впрок и удаляет старые.
В ide99 кнопка Run maintenance now в панели Partman вызовет вручную. Полезно после конфиг-изменений или для проверки.
Для автоматизации в продакшене настройте cron или pg_cron. ide99 сам по себе не запускает cron — это десктоп-приложение.
Просмотр партиций
В дереве таблица events_p будет иметь дочерние узлы для каждой партиции:
events_p (parent, 12 partitions)
├─ events_p_p2026_05
├─ events_p_p2026_06
├─ events_p_p2026_07
└─ ...
Кликнуть на партицию — увидеть её размер, число строк, индексы.
Изменение конфигурации
Правый клик на partman-родителе → Configure. Откроется форма с текущими настройками. Меняете → ide99 покажет SQL и применит:
UPDATE partman.part_config
SET retention = '90 days',
premake = 7
WHERE parent_table = 'public.events_p';
После этого следующий run_maintenance применит новые правила.
Удаление partman-конфига
Правый клик → Disable partman tracking. Это вызовет partman.undo_partition() или partman.partition_data_proc() в зависимости от опций. Партиции остаются, но автоматизация снимается.
Полное удаление таблицы — через Object Editor → Drop table… с CASCADE. Будьте осторожны.
Hash и list-партиционирование
ide99 поддерживает только RANGE через partman (это самый частый случай — по времени). Для HASH и LIST управление через ручные SQL-команды Postgres — UI не помогает, но Schema Browser всё равно покажет дерево партиций.
Что дальше
- Schema Browser — где появляется Partman-панель.
- pg_repack — для разовой реорганизации (отдельная задача от партиционирования).