Я нахожусь в том, что хочу удалять строки старше (x) -дней в скользящей основе во многих приложениях. Каков наилучший способ сделать это наиболее эффективно в таблице с высоким трафиком?
Например, если у меня есть таблица, в которой хранятся уведомления, и я хочу сохранить их только 7 дней. Или высокие оценки, которые я хочу сохранить только 31 день.
Прямо сейчас я сохраняю строку, хранящую опубликованное время эпохи, и запускаю задание cron, которое выполняется один раз в час и удаляет их с такими значениями:
DELETE FROM my_table WHERE time_stored < 1234567890 LIMIT 100
Я делаю это до тех пор, пока mysql_affected_rows не вернет 0.
Я делал все это сразу, но это заставило все в приложении зависнуть в течение 30 секунд или около того, пока складывается INSERTS. Добавление LIMIT сработало, чтобы облегчить это, но мне интересно, есть ли лучший способ сделать это.