चर्चा से कुछ टिप्पणियों को एक उत्तर में स्थानांतरित करना, फिर से शब्दांकन और पुन: स्वरूपण के साथ ।।
असल में, यह क्या है कि जब तक आपके पास एक सुपर चरम मामला नहीं है, तब तक उन्हें वास्तव में "कचरा एकत्र" करने की आवश्यकता नहीं है। यदि आप उन्हें कभी नहीं लेते हैं, तो इससे कोई फर्क नहीं पड़ता कि वे वहां हैं या नहीं।
देखें, ग्राहक डिफ़ॉल्ट रूप से विकल्प तालिका में संग्रहीत किए जाते हैं। बेस इंस्टॉल में, विकल्प तालिका में शायद 100 प्रविष्टियां होंगी। प्रत्येक क्षणिक दो और प्रविष्टियाँ जोड़ता है, लेकिन यदि आपके पास हजारों हैं, तो भी वे साइट की गति को प्रभावित नहीं करते हैं, क्योंकि वे ऑटोलॉइड नहीं हैं।
स्टार्टअप पर, वर्डप्रेस विकल्पों को स्मृति में लोड करता है, लेकिन यह केवल उन विकल्पों को लोड करता है जिनके पास अपना ऑटोलॉड ध्वज है। ग्राहकों को यह नहीं मिलता है, और इसलिए स्मृति में लोड नहीं होता है। बाद में वास्तव में उपयोग किए जाने वाले केवल ट्रांजिस्टर ही लागत वसूलेंगे।
डेटाबेस के दृष्टिकोण से, विकल्प तालिका में विकल्प आईडी और विकल्प नाम दोनों पर अनुक्रमित हैं। ग्राहकों को हमेशा नाम (कुंजी) के आधार पर लोड किया जाता है, और इसलिए उनके लिए लुकअप हमेशा एक ही अद्वितीय कुंजी मूल्य पर सरल चयन होते हैं। इस प्रकार लुकिंग O (लॉग (n)) है और सुपर फास्ट है। लॉग-इन (n) के बिग-ओ के साथ, आपको ध्यान देने योग्य बनने से पहले लाखों और लाखों पंक्तियों में उतरना होगा। सच कहूं, तो वास्तविक डेटा ट्रांसफर के साथ, क्वेरी के सेटअप और ओवरडाउन में ओवरहेड, रास्ता लंबा होता है। तुलना के द्वारा क्वेरी अनिवार्य रूप से शून्य-समय में चलती है। तो बस होने अतिरिक्त अप्रयुक्त पंक्तियों कुछ भी अतिरिक्त डिस्क स्थान का उपयोग लेकिन प्रभावित नहीं करता।
डेटाबेस में अनुक्रमण उन गहरे-पढ़े गए विचारों में से एक है जो उन लोगों के लिए कोई मतलब नहीं है जो वास्तव में समझ नहीं पाए हैं कि पर्दे के पीछे क्या चल रहा है। डेटाबेस तेजी से डेटा पुनर्प्राप्ति के लिए डिज़ाइन किए गए हैं, जमीन से ऊपर, और मुद्दों के बिना इस तरह की चीज को संभाल सकते हैं। यह एक बहुत अच्छा पढ़ा है: http://en.wikipedia.org/wiki/Index_(database )
अब, सबसे स्पष्ट तरीके से सफाई करें (उन पर SQL DELETE को कॉल करना) वास्तव में उन्हें डेटाबेस से नहीं हटाता है। यह सिर्फ उन्हें सूचकांक से हटाता है और पंक्ति को "हटाए गए" के रूप में चिह्नित करता है। फिर, यह सिर्फ डेटाबेस कैसे काम करता है। डिस्क स्थान को वास्तव में साफ़ करने के लिए, आपको उसके बाद जारी रखना होगा और बाद में एक OPTIMIZE TABLE करना होगा, और यह तेज़ ऑपरेशन नहीं है। इसमें समय लगता है। इसके लायक होने की तुलना में शायद अधिक समय। सीपीयू के समय में आपको कुल मिलाकर बचत देना संभव नहीं है।
यदि आपके पास कुछ मामला है जो नए संक्रमणों के लगातार सम्मिलन का कारण बन रहा है जो उपयोग नहीं किए जा रहे हैं, तो आपको इसके बजाय अंतर्निहित समस्या का पता लगाने की आवश्यकता है। इन ग्राहकों को क्या सम्मिलित कर रहा है? क्या वे एक बदलते या परिवर्तनशील कुंजी का उपयोग कर रहे हैं? यदि ऐसा है, तो इसके कारण प्लगइन या कोड को मूल रूप से तय किया जाना चाहिए, ऐसा नहीं करना चाहिए। यह अधिक उपयोगी होगा, क्योंकि यह संभावना है कि कोड जो उन्हें ठीक से नहीं बना रहा है, उन्हें भी पुनर्प्राप्त नहीं कर रहा है, और इस तरह से अधिक काम करना पड़ता है।
दूसरी ओर, ऐसा मामला भी हो सकता है जहां हर पोस्ट की तरह कुछ के लिए ग्राहक बनाए जा रहे हैं। यह वास्तव में पूरी तरह से स्वीकार्य हो सकता है। मैं फेसबुक से आने वाली टिप्पणियों को स्टोर करने के लिए खुद को एसएफसी में करता हूं। प्रत्येक पोस्ट में एक संभावित क्षणिक जुड़ा होता है, जिसका अर्थ है प्रति पोस्ट दो अतिरिक्त पंक्तियाँ। यदि आपके पास 10k पोस्ट हैं, तो आपके पास विकल्प तालिका (अंततः) में 20k पंक्तियाँ होंगी। यह बुरा या धीमा नहीं है, क्योंकि फिर से, 100 पंक्तियों और 20,000 पंक्तियों के बीच बहुत कम अंतर है जहाँ तक डेटाबेस वास्तव में परवाह करते हैं। यह सब अनुक्रमित है। यह बिल्ली के समान तेज़ है। उप-उप मिलीसेकेंड।
जब आप लाखों पंक्तियों में आने लगते हैं, तो मुझे चिंता होगी। जब विकल्प तालिका का आकार सैकड़ों मेगाबाइट से ऊपर बढ़ जाता है, तो मैं काफी चिंतित होऊंगा। लेकिन आम तौर पर, यह चरम मामलों को छोड़कर एक मुद्दा नहीं है। यह निश्चित रूप से सैकड़ों हजारों पदों के साथ एक बड़ी खबर साइट की तरह कुछ से छोटे के लिए एक मुद्दा नहीं है। और किसी भी साइट के लिए यह एक समस्या होने के लिए पर्याप्त है, आपको किसी प्रकार के बाहरी ऑब्जेक्ट कैश का उपयोग करना चाहिए, और उस स्थिति में, डेटाबेस के बजाय ग्राहकों को स्वचालित रूप से वहां संग्रहीत किया जाता है।