2016-11-19 2 views
2

У меня есть база данных, в которой есть столбец временной метки, и я хочу, чтобы устаревшие данные были удалены.Автоматически удалять устаревшие строки из базы данных каждые n секунд

Итак, моя идея написать MySQL-запрос в файл .php, который удаляет каждую строку, где timestamp < current_timestamp - const. Поскольку там будет много строк, где это нужно проверить, я собираюсь установить индекс в столбец timestamp.

Так как я могу запустить этот скрипт автоматически каждые n секунд? Я слышал о Linux crontab - могу ли я использовать это на своем веб-сервере (а не на сервере db) для периодического выполнения .php-файла и является ли это в целом хорошей техникой для удаления устаревших строк из базы данных?

База данных установлена ​​на экземпляр RDS на веб-сервисах Amazon. Мой веб-сервер - это экземпляр EC2 (также Amazon Web Services).

ответ

4

Выполнение такой вещи требует установки мероприятия или работы. Такие усилия ведут к тому, что база данных очень занята.

Я бы настоятельно рекомендовал другой подход. Используйте представление для доступа к данным, которые вы хотите:

create view v_t as 
    select t.* 
    from t 
    where timestamp > CURRENT_TIMESTAMP - ??; 

Затем используйте это представление для доступа к данным.

Затем, периодически, зайдите в чистый стол, чтобы избавиться от строк, которые вам не нужны. Вы можете делать это один раз в день, один раз в неделю, один раз в час - удаление может происходить в моменты, когда загрузка базы данных легче, поэтому она не влияет на пользователей.

Смежные вопросы