Ответ 1
Сохраняется ли дата создания элемента в поле?
Если да,
DELETE FROM myTable WHERE dateEntered < DATE_SUB(NOW(), INTERVAL 3 MONTH);
должен работать...
Вы можете запустить его в запланированном задании задачи/cron...
Мы используем mysql-сервер в качестве централизованной системы ведения журнала, и я хочу, чтобы у меня было задание на удаление \clean записей в таблице, которые более 3 месяцев регулярно. Каков наилучший способ сделать это?
Спасибо заранее.
-hinling
Сохраняется ли дата создания элемента в поле?
Если да,
DELETE FROM myTable WHERE dateEntered < DATE_SUB(NOW(), INTERVAL 3 MONTH);
должен работать...
Вы можете запустить его в запланированном задании задачи/cron...
MySQL 5.1 поддерживает Events. Я на самом деле не использовал их сам, поэтому я не буду ручаться за них. Однако, если все, что вы хотите сделать, это регулярно запускать инструкцию DELETE, я думаю, что она будет работать достаточно хорошо.
Простым способом было бы запланировать задание, которое выполняется каждую ночь, которая вызывает хранимую процедуру для удаления всех строк старше трех месяцев. В зависимости от вашего O/S это должно быть легко сделать. Делайте это каждую ночь, и количество удаленных данных будет не таким, как это делается раз в месяц или около того.
В прошлом я также имел код в своем SP, который вставлял данные для удаления ненужных данных в это время, поэтому в основном каждый раз, когда вставлена строка, сразу после того, как вставка запускает процесс очистки, который сделал немного обслуживания. Это был бы не мой первый выбор, но его можно было бы сделать, если количество вставок низкое, а удаление может быть выполнено быстро (вы не хотите замедлять пользователя). Хорошим побочным эффектом этого является то, что данные всегда чисты (т.е. Все данные всегда <= 3 месяца), но не уверены, что это важно в вашем приложении.
Вы также должны рассмотреть возможность архивирования строк в другую таблицу вместо удаления их, если есть вероятность, что вы захотите данных когда-нибудь для другой цели. Я всегда это делаю, и вы будете удивлены, какой герой может выглядеть, когда какой-то менеджер, который даже не знает, что вы сохраняете данные, внезапно нуждается в срочной необходимости... и вы можете доставить им.
Перефразируя ваш вопрос: "У меня есть код, который не зависит от клиента, который я хочу запускать в базе данных несколько раз, и мне не нужно видеть вывод", тогда ответ "напишите сохраненный proc и вызывать его от любого клиента на регулярной основе".