Периодическая очистка базы данных - PullRequest
1 голос
/ 01 октября 2011

Я создаю службу общедоступных сообщений, и мне было интересно, чтобы очистить самые старые сообщения, можно ли удалять самое старое сообщение каждый раз при отправке нового?Или этот подход по какой-то причине неэффективен?Если да, не могли бы вы указать, почему?

Я подумал создать для этого Cron Job , но я не уверен, применимо ли это в этом случае.

Ответы [ 3 ]

3 голосов
/ 01 октября 2011

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

DELIMITER $$

CREATE EVENT cleanup_messages ON SCHEDULE EVERY day ENABLE 
DO BEGIN
  DELETE FROM messages WHERE ......;
END $$

DELIMITER ;

http://dev.mysql.com/doc/refman/5.1/en/create-event.html

1 голос
/ 01 октября 2011

Я предлагаю Cron Job, я считаю, что в каждом сообщении есть отметка времени, поэтому вы можете удалить более старую запись с помощью отметки времени при запуске cron.

1 голос
/ 01 октября 2011

Это звучит вряд ли будет уместным.Целесообразность удаления старого сообщения вряд ли будет зависеть от нового сообщения - например, если вы хотите хранить сообщения не менее месяца, то вы не хотите начинать удалять последние сообщения, если вдруг получилимного сообщений за короткий период.

Я предлагаю вам выработать критерии «мусора», а затем запланировать обычную работу для пакетного удаления старых сообщений (например, один раз в день).

...