Как получить количество почасовых вставок в таблицу в PostgreSQL

#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 месяца мы просто удаляем раздел. Это намного быстрее, чем УДАЛЕНИЕ.