Записи SQL, срок действия которых истекает через 24 часа

Я хочу создать таблицу, в которой записи истекают через 24 часа после того, как они были вставлены в PHP и MySQL.

В идеале я хочу запускать «процесс удаления» каждый раз, когда пользователь взаимодействует с моим сервером, который удаляет старые записи. Поскольку это происходит чаще, вам не нужно удалять большие объемы данных, поэтому требуется всего несколько миллисекунд.

Я дал каждой записи добавленную дату / время.

Как мне это сделать?

Solutions Collecting From Web of "Записи SQL, срок действия которых истекает через 24 часа"

Вы можете использовать планировщик событий MySQL:

  • автоматически удалять такие записи, когда они истекают:

    CREATE EVENT delete_expired_101 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 24 HOUR DO DELETE FROM my_table WHERE id = 101; 
  • регулярно выполнять автоматическую очистку всех устаревших записей:

     CREATE EVENT delete_all_expired ON SCHEDULE EVERY HOUR DO DELETE FROM my_table WHERE expiry < NOW(); 
  1. вы не должны делать процесс удаления, когда пользователь взаимодействует. это замедляет работу, вы должны использовать cronjob (каждую минуту / час)
  2. вам нужно индексировать добавленное значение временной метки, а затем запустить DELETE FROM table WHERE added < FROM_UNIXTIME(UNIX_TIMESTAMP()-24*60*60)
  3. возможно, вам захочется проверять разделы , которые делят таблицу на разные таблицы, но она ведет себя как одна таблица. Преимущество состоит в том, что вам не нужно удалять записи, и у вас будут отдельные таблицы для каждого дня.
  4. Я думаю, что вы думаете, что многие данные замедляют работу таблиц. Возможно, вам следует использовать EXPLAIN ( руководство MySQL ) и оптимизировать ваши запросы SELECT с помощью индексов ( руководство по MySQL )
  5. ОБНОВЛЕНИЕ Проверьте ответ eggyal – Это еще один подход, заслуживающий внимания.

Вы можете изучить использование Cron Job, http://en.wikipedia.org/wiki/Cron. Запускайте его каждые 24 часа, когда он соответствует вашему требованию.

Это поможет

Удалить строку MySQL после прохода времени