MySQL-এ TTL (Time To Live) ইমপ্লিমেন্ট করতে Event Scheduler ব্যবহার করুন। এটি স্বয়ংক্রিয়ভাবে পুরনো রেকর্ড ডিলিট করে।
প্রস্তুতি: Event Scheduler অন করা
mysql> SET GLOBAL event_scheduler = ON;
স্থায়ী করতে my.cnf-এ event_scheduler=ON যোগ করুন।
টেবিল তৈরি করুন
mysql> CREATE TABLE EventDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EventDateTime DATETIME
-> );
Query OK, 0 rows affected (0.71 sec)
রেকর্ড ইনসার্ট করুন:
mysql> INSERT INTO EventDemo(EventDateTime) VALUES('2010-09-21');
mysql> INSERT INTO EventDemo(EventDateTime) VALUES('2016-10-27');
mysql> INSERT INTO EventDemo(EventDateTime) VALUES('2018-12-09');
mysql> INSERT INTO EventDemo(EventDateTime) VALUES('2019-03-12');
mysql> INSERT INTO EventDemo(EventDateTime) VALUES('2019-01-04');
সকল রেকর্ড:
mysql> SELECT * FROM EventDemo;
+----+---------------------+
| Id | EventDateTime |
+----+---------------------+
| 1 | 2010-09-21 00:00:00 |
| 2 | 2016-10-27 00:00:00 |
| 3 | 2018-12-09 00:00:00 |
| 4 | 2019-03-12 00:00:00 |
| 5 | 2019-01-04 00:00:00 |
+----+---------------------+
5 rows in set (0.00 sec)
TTL ইভেন্ট তৈরি করুন (প্রতিদিন পুরনো রেকর্ড ডিলিট)
mysql> DELIMITER //
mysql> CREATE EVENT DeleteDemo
-> ON SCHEDULE EVERY 1 DAY
-> DO
-> BEGIN
-> DELETE FROM EventDemo WHERE EventDateTime < NOW();
-> END //
Query OK, 0 rows affected (0.31 sec)
mysql> DELIMITER ;
ইভেন্ট লিস্ট দেখুন
mysql> SHOW EVENTS;
গুরুত্বপূর্ণ পয়েন্টস
ON SCHEDULE EVERY 1 DAY- প্রতিদিন একবার চালাবেNOW()- বর্তমান টাইমস্ট্যাম্প, এর চেয়ে পুরনো রেকর্ড ডিলিট হবেDELIMITER // ... DELIMITER ;- মাল্টি-স্টেটমেন্ট ব্লকের জন্য ডিলিমিটার পরিবর্তন- ইভেন্ট ডিজেবল করতে:
ALTER EVENT DeleteDemo DISABLE; - ইভেন্ট ড্রপ করতে:
DROP EVENT DeleteDemo;
বিকল্প (MySQL 8.0+): TTL কলামে EXPIRE AFTER INTERVAL ব্যবহার করা যায় (কিছু স্টোরেজ ইঞ্জিনে) বা অ্যাপ্লিকেশন লেভেলে হ্যান্ডেল করুন।