18-08-2016, Saat: 15:55
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.
Ş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,
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,
Kullanabileceğimiz İnterval'ler
Ve BEGIN END bloğuma çalışmasını istediğim sql cümlelerimi yazıyorum.
Mysql'de var olan Eventlerimi listelemek için,
Event Statüsünü Değiştirmek İçin,
Event Zamanını Değiştirmek İçin,
Event Silmek İçin,
Daha Fazla Bilgi İçin Tıklayınız.
Öncelikle Aşağıdaki komutla bu özellik açılır.
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,
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,
ON SCHEDULE EVERY 24 HOUR STARTS '2016-06-18 19:00:00'
Kullanabileceğimiz İnterval'ler
Alıntı: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.
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,
SHOW EVENTS;
Event Statüsünü Değiştirmek İçin,
ALTER EVENT cleaner DISABLE; ALTER EVENT cleaner ENABLED;
Event Zamanını Değiştirmek İçin,
ALTER EVENT cleaner ON SCHEDULE EVERY 12 HOUR;
Event Silmek İçin,
DROP EVENT cleaner
Daha Fazla Bilgi İçin Tıklayınız.

