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

विशाल तालिका से बड़ी मात्रा में डेटा हटाएं

कोई भी समाधान जो एक लेन-देन में इतना अधिक डेटा हटाने का प्रयास करता है, वह रोलबैक सेगमेंट को अभिभूत कर देगा और बहुत सारी प्रदर्शन समस्याओं का कारण बनेगा।

मदद करने के लिए एक अच्छा टूल है pt-archiver . यह यथासंभव कुशलता से पंक्तियों के मध्यम आकार के बैचों पर वृद्धिशील संचालन करता है। pt-archiver विकल्पों के आधार पर पंक्तियों को कॉपी, स्थानांतरित या हटा सकते हैं।

दस्तावेज़ में अनाथ पंक्तियों को हटाने का एक उदाहरण शामिल है, जो वास्तव में आपका परिदृश्य है:

pt-archiver --source h=host,D=db,t=VALUE --purge \
  --where 'NOT EXISTS(SELECT * FROM `KEY` WHERE key_id=`VALUE`.key_id)' \
  --limit 1000 --commit-each

इसे निष्पादित करने में डेटा को हटाने में काफी अधिक समय लगेगा, लेकिन यह बहुत अधिक संसाधनों का उपयोग नहीं करेगा, और आपके मौजूदा डेटाबेस पर सेवा को बाधित किए बिना। मैंने पुराने डेटा की करोड़ों पंक्तियों को शुद्ध करने के लिए इसका सफलतापूर्वक उपयोग किया है।

pt-archiver MySQL के लिए Percona टूलकिट का हिस्सा है , स्क्रिप्ट का एक मुफ़्त (GPL) सेट जो MySQL और संगत डेटाबेस के साथ सामान्य कार्यों में मदद करता है।



  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 डेटाबेस को Amazon RDS से DigitalOcean में माइग्रेट करना

  2. चुनिंदा उपयोगकर्ताओं के पास mysql में एक से अधिक विशिष्ट रिकॉर्ड हैं

  3. Android पर DriverManager.getConnection () के साथ असमर्थित ऑपरेशन अपवाद

  4. एकल तालिका के भीतर SQL समय अंतर

  5. डीबी (php) से तालिका पंक्तियों को कैसे प्रतिध्वनित करें