Eventler, MySQL’e 5.1.6 Sürümünden sonra gelen Zamanlanmış Görevler özelliğidir ve varsayılanda kapalıdır.
Öncelikle Aşağıdaki komutla bu özellik açılır.
1 2 3 4 5 |
SET GLOBAL event_scheduler = 1; |
Şimdi bir senaryo üzerinde anlayalım, benim sürekli hata analizleri için kullandığım bir kaç tabloyu daha fazla şişmemesi için belirli periyotlarla silmek ve optimize etmek istiyorum.
Son 3 günüm kayıtları benim görüp analiz etmem için yeterli, gerisine gerek yok…
Eventime bir isim veriyorum cleaner,
1 2 3 4 5 |
CREATE EVENT cleaner |
ve sayacımı ayarlıyorum, ben bu eventimin 2016-06-18 19:00:00 tarihinden başlayarak, her 24 saatte bir çalışmasını istiyorum. yani her gün saat 19:00:00 da bu eventim çalışacak,
1 2 3 4 5 |
ON SCHEDULE EVERY 24 HOUR STARTS '2016-06-18 19:00:00 |
Kullanabileceğimiz İnterval’ler
1 2 3 4 5 |
YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND |
Ve BEGIN END bloğuma çalışmasını istediğim sql cümlelerimi yazıyorum.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
delimiter | CREATE EVENT cleaner ON SCHEDULE EVERY 24 HOUR STARTS DO BEGIN DELETE FROM llpano WHERE tarih < DATE_SUB(CURRENT_DATE, INTERVAL 3 DAY); DELETE FROM ops_havuz WHERE tarih < DATE_SUB(CURRENT_DATE, INTERVAL 3 DAY); DELETE FROM ops_havuzlog WHERE tarih < DATE_SUB(CURRENT_DATE, INTERVAL 3 DAY ); SET @maxid = 0 ; SELECT ifnull(max(id),0) INTO @maxid FROM ops_ptt; DELETE from ops_ptt WHERE id < (@maxid-1000); OPTIMIZE TABLE llpano; OPTIMIZE TABLE ops_havuz; OPTIMIZE TABLE ops_havuzlog; OPTIMIZE TABLE ops_ptt; END | delimiter; |
Mysql’de var olan Eventlerimi listelemek için,
1 2 3 4 5 |
SHOW EVENTS; |
Event Statüsünü Değiştirmek İçin,
1 2 3 4 5 6 |
ALTER EVENT cleaner DISABLE; ALTER EVENT cleaner ENABLED; |
Event Zamanını Değiştirmek İçin,
1 2 3 4 5 6 |
ALTER EVENT cleaner ON SCHEDULE EVERY 12 HOUR; |
Event Silmek İçin,
1 2 3 4 5 |
DROP EVENT cleaner |
Daha Fazla Bilgi İçin Tıklayınız.