Чи має Postgres якісь функції для підтримки старіших старих записів?
Я хочу використовувати Postgres для ведення журналів, як свого роду черги, де записи (події журналу), старші двох тижнів, автоматично видаляються.
Чи має Postgres якісь функції для підтримки старіших старих записів?
Я хочу використовувати Postgres для ведення журналів, як свого роду черги, де записи (події журналу), старші двох тижнів, автоматично видаляються.
Відповіді:
Немає вбудованої функції для автоматичного видалення рядків за часовим режимом (про який я б знав).
Ви можете виконувати щоденну роботу (ви вирішите) cron-завдання для планування простих DELETE
команд або використання pgAgent для цієї мети.
Або ви можете використовувати розділення з тижневими розділами, які успадковуються з головної таблиці , давайте зможе викликати його log
. Це зробить видалення дуже дешевим : просто дотримуйтесь останніх двох тижнів і скиньте старіші розділи.
Створіть a RULE
або a TRIGGER
на головній таблиці, яка перенаправляє INSERTs до розділу поточного тижня на основі системного часу. Завжди увійдіть у головну таблицю log
. Створюйте дочірні таблиці достроково. Зробіть це на кілька тижнів вперед, щоб бути впевненим і виконайте щотижневу роботу з крон, яка додає майбутні дочірні таблиці ...
У посібнику є приклади коду .
Відповідна відповідь з функцією plpgsql створює таблиці автоматично:
Пов'язане рішення відтворює RULE
перенаправлення INSERT. Функція тригера може динамічно записувати на поточний розділ ...