MySQL इवेंट शेड्यूलर का उपयोग करके TTL-आधारित रिकॉर्ड ऑटो-डिलीट करना
MySQL में TTL (Time To Live) लागू करने के लिए इवेंट शेड्यूलर का उपयोग करें जो समय-समय पर पुराने रिकॉर्ड हटाता है।
चरण 1: इवेंट शेड्यूलर सक्षम करें
SET GLOBAL event_scheduler = ON;
या कॉन्फ़िगरेशन फ़ाइल में: event_scheduler = ON
चरण 2: टेबल बनाएं
mysql> create table EventDemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EventDateTime datetime
-> );
डेटा डालें:
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');
चरण 3: TTL इवेंट बनाएं (हर दिन चलता है)
mysql> delimiter //
mysql> CREATE EVENT DeleteDemo
-> ON SCHEDULE EVERY 1 DAY
-> DO
-> BEGIN
-> DELETE FROM EventDemo WHERE EventDateTime < NOW();
-> END //
mysql> delimiter ;
व्याख्या
ON SCHEDULE EVERY 1 DAY: हर दिन चलता हैEventDateTime < NOW(): वर्तमान समय से पुराने रिकॉर्ड हटाता हैdelimiter //: स्टोर्ड प्रोग्राम में ; को संभालने के लिए
इवेंट प्रबंधन
-- इवेंट देखें SHOW EVENTS; -- इवेट अक्षम/सक्षम करें ALTER EVENT DeleteDemo DISABLE; ALTER EVENT DeleteDemo ENABLE; -- इवेंट ड्रॉप करें DROP EVENT DeleteDemo;
वैकल्पिक: एप्लिकेशन-स्तर TTL
एप्लिकेशन कोड में डालते समय expires_at कॉलम सेट करें और क्रॉन जॉब/शेड्यूलर से सफाई करें। यह अधिक लचीला और पोर्टेबल है।
नोट
- इवेंट शेड्यूलर डिफ़ॉल्ट रूप से OFF होता है
- इवेंट सटीक समय पर नहीं चलने की गारंटी देता (सेकंड की सटीकता नहीं)
- उच्च-आवृत्ति सफाई के लिए पार्टीशनिंग पर विचार करें