Есть ли у Postgres какие-либо функции для поддержки устаревших старых записей?
Я хочу использовать Postgres для регистрации, как своего рода очередь, где записи (события журнала) старше двух недель автоматически удаляются.
postgresql
delete
queue
Базилик Бурк
источник
источник
Ответы:
Нет встроенной функции для автоматического удаления строк в режиме, основанном на времени (о котором я бы знал).
Вы можете запускать ежедневное (вы решаете) задание cron для планирования простых
DELETE
команд или использовать pgAgent для этой цели.Или вы можете использовать разделение с еженедельными разделами, которые наследуются от главной таблицы , давайте назовем это
log
. Это сделало бы удаление очень дешевым : просто оставьте последние две недели и удалите старые разделы.Создайте a
RULE
или aTRIGGER
в главной таблице, которая перенаправляет вставки в раздел текущей недели на основе системного времени. Всегда входите в главную таблицуlog
. Создайте дочерние таблицы заранее. Сделайте это на несколько недель вперед, чтобы быть уверенным, и запустите еженедельную работу cron, которая добавляет будущие дочерние таблицы ...В руководстве приведены примеры кода .
Связанный ответ с функцией plpgsql, создающей таблицы автоматически:
Соответствующее решение воссоздает
RULE
для перенаправления INSERT. Функция триггера может записывать в текущий раздел динамически ...источник