Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

निर्माण के 10 मिनट बाद रिकॉर्ड समाप्त करने का सबसे कारगर तरीका

ऐसा करने का सबसे कारगर तरीका एक दृश्य का उपयोग करना है। हुह? इसका समस्या से क्या लेना-देना है? खैर, वार्ड के 10 मिनट बाद डिलीट न करें। इसके बजाय, निम्न तर्क के साथ एक दृश्य बनाएं:

create view v_recoveries as
    select r.*
    from recoveries r
    where expiry > date_sub(now(), interval 10 minutes);

परफ़ॉर्मेंस के लिए, आप recoveries(expiry) . पर एक इंडेक्स चाहते हैं , तो यह तेज़ होना चाहिए।

फिर, अपने खाली समय में -- प्रति तिथि एक बार, या प्रति घंटे एक बार, या प्रति सप्ताह एक बार -- इसके साथ अनावश्यक रिकॉर्ड हटाएं:

DELETE FROM `recoveries`
    WHERE `expiry` <= date_sub(now(), interval 10 minutes);

इस दृष्टिकोण के कई फायदे हैं:

  • किसी कार्य के शेड्यूलिंग के आधार पर डेटा की उपस्थिति ठीक 10 मिनट की होती है।
  • वास्तविक विलोपन तब हो सकता है जब सिस्टम निष्क्रिय हो।
  • यदि कोई क्रॉन जॉब निष्पादित करने में विफल रहता है, तो डेटा "दूषित" नहीं होता है - अर्थात, आपको बहुत पुराना डेटा नहीं मिलता है।
  • यदि सिस्टम व्यस्त है (बहुत सारे इंसर्ट), तो इंसर्ट्स डिलीट के साथ प्रतिस्पर्धा नहीं कर रहे हैं, सिस्टम को और धीमा कर रहे हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL डेटटाइम (टाइमस्टैम्प नहीं) का डिफ़ॉल्ट मान अभी () या Current_DateTIme पर कैसे सेट करें?

  2. DataTable.Load स्रोत से कम पंक्तियाँ दिखाता है DataReader

  3. दिनांक और अन्य फ़ील्ड द्वारा समूहीकृत कुल फ़ील्ड प्राप्त करें

  4. मैं MySQL में एक इंडेक्स का नाम कैसे बदलूं

  5. बड़ी मेज पर अनुक्रमणिका जोड़ना हमेशा के लिए लेता है