Есть ли в PostgreSQL встроенная функция удаления старых записей каждую минуту или час, например, удаление всех записей старше 2 лет и проверка каждый час? - PullRequest
0 голосов
/ 29 апреля 2020

Имеет ли Postgres какие-либо функции для поддержки устаревших старых записей?

Как видно из названия, я хочу удалять все записи старше 2 лет и проверять их каждые несколько минут или часы. Я видел посты, которым уже нет, но, возможно, все изменилось.

Ответы [ 2 ]

3 голосов
/ 29 апреля 2020

В дополнение к хорошему ответу на DBA Stack Exchange , позвольте мне добавить следующее:

Нет необходимости удалять строки каждые пару минут. Скорее вы скрываете их от запросов.

Возьмите этот простой пример:

CREATE TABLE realdata (
   id bigint PRIMARY KEY,
   payload text,
   create_time timestamp with time zone DEFAULT current_timestamp NOT NULL
) PARTITION BY RANGE (create_time);

CREATE VIEW visibledata AS
   SELECT * FROM realdata
   WHERE create_time > current_timestamp - INTERVAL '2 years';

Представление достаточно простое, чтобы вы могли INSERT, UPDATE и DELETE непосредственно на нем ; нет необходимости в триггерах.

Теперь все данные будут автоматически отклоняться sh от visibledata через два года.

Иногда вы запускаете задачу очистки, которая просто удаляет все разделы старше двух года.

0 голосов
/ 29 апреля 2020

Ответ - нет: для этого ничего не изменилось.

...