#postgresql #sql-insert #amazon-aurora #postgresql-11
#postgresql #sql-вставка #amazon-aurora #postgresql-11
Вопрос:
Мне нужна настройка, при которой строки старше 60 дней удаляются из таблицы в PostgreSQL.
Я создал функцию и триггер:
BEGIN
DELETE FROM table
WHERE updateDate < NOW() - INTERVAL '60 days';
RETURN NULL;
END;
$;
Но я считаю, что если частота вставки высока, для этого придется довольно часто сканировать всю таблицу, что приведет к высокой загрузке БД.
Я мог бы запускать эту функцию через cron
задание или лямбда-функцию каждый час / день. Мне нужно знать вставку каждый час в этой таблице, чтобы принять это решение.
Есть ли запрос или задание, которые я могу настроить, которые будут собирать детали?
Комментарии:
1. Боюсь, я не понимаю вашего вопроса — вы спрашиваете о том, как настроить задание cron?
2. Извиняюсь за это @NevilleKuyt, нужен способ узнать количество транзакций (в основном вставок), которые происходили в таблице каждый час.
3. Это забавно. ваш комментарий и заголовок вопроса кажутся совершенно не связанными с вопросом. Что вы хотите: подсчитывать вставки или удалять строки?
Ответ №1:
Просто чтобы подсчитать количество записей в час, вы можете запустить этот запрос:
SELECT CAST(updateDate AS date) AS day
, EXTRACT(HOUR FROM updateDate) AS hour
, COUNT(*)
FROM _your_table
WHERE updateDate BETWEEN ? AND ?
GROUP BY
1,2
ORDER BY
1,2;
Мы делаем около 40 миллионов вставок в день в одной таблице, которая разделена по месяцам. И через 3 месяца мы просто удаляем раздел. Это намного быстрее, чем УДАЛЕНИЕ.