Oto kilka przykładów użycia crona w bazie MySQL.
Powiedzmy że mamy do przebudowania tabelę często używaną z dużą ilością rekordów.
Oczywiście najlepiej zrobić to w nocy kiedy ruch maleje a co za tym idzie serwer ma większy zapas mocy.
Możemy przeprowadzić to na kilka sposobów:
- ustawić budzik na właściwą godzinę, 
- za pomoca linuksowego cron-a,
- wbudowanego mechanizmu event scheduler.
Zobaczmy kilka przykładów z użyciem zaplanowanych zadań (opcja trzecia).
Jednorazowe zadania:
-- event zaplanowany na konkretną godzinę.
CREATE EVENT event_alter
ON SCHEDULE AT TIMESTAMP '2010-01-16 04:00:01'
DO alter table tab_name change `nazwa` `nazwa` varchar(100) NOT NULL;
-- event ma się wykonać za 7 godzin od czasu stworzenia go.
CREATE EVENT event_alter
ON SCHEDULE AT TIMESTAMP (NOW() + INTERVAL 7 HOUR)
DO alter table tab_name change `nazwa` `nazwa` varchar(100) NOT NULL;
Cykliczne zadania:
-- event ma się wykonywać raz dziennie od 2010-01-16 02:30:00.
CREATE EVENT event_delete
ON SCHEDULE
EVERY 1 DAY
STARTS '2010-01-16 02:30:00'
COMMENT 'Event ma skasowac dane starsze niz tydzine'
DO DELETE FROM tab_name WHERE datetime< (NOW() - INTERVAL 7 DAY);
-- event ma się wykonywać raz dziennie od teraz + 7 godzin.
CREATE EVENT event_delete
ON SCHEDULE
EVERY 1 DAY
STARTS (NOW() + INTERVAL 7 HOUR)
COMMENT 'Event ma skasowac dane starsze niz tydzine'
DO DELETE FROM tab_name WHERE datetime< (NOW() - INTERVAL 7 DAY);
Tu przykład zadania kasujacego binlogi starszych niż 2 dni.
CREATE EVENT `event_delete_binlogs`
ON SCHEDULE EVERY 1 DAY
STARTS '2010-01-16 03:00:01'
ON COMPLETION NOT PRESERVE ENABLE
COMMENT 'Event ma za zadanie wyczyscic binlogi 2 dni wstecz'
DO PURGE BINARY LOGS BEFORE (NOW() - INTERVAL 2 DAY);
Miłego planowania.
http://dev.mysql.com/doc/refman/5.1/en/events-syntax.html