संकुचित में आपकी मदद कर सकते हैं "क्या कॉम्पैक्ट और मरम्मत कार्यों के एक एमडीबी के लिए क्या करते हो?"
सबसे पहले, मरम्मत के बारे में चिंता न करें। तथ्य यह है कि अभी भी आदेश हैं जो एक स्टैंडअलोन मरम्मत करने के लिए पुराना है पुराने दिनों की विरासत है। उस आदेश का वह व्यवहार जेट 3.51 से बहुत बदल गया था, और उसके बाद से बना रहा है। यही है, एक मरम्मत तब तक नहीं की जाएगी जब तक कि जेट/एसीई निर्धारित नहीं करता कि यह आवश्यक है। जब आप कॉम्पैक्ट करते हैं, तो यह जांच करेगा कि मरम्मत की आवश्यकता है या कॉम्पैक्ट से पहले इसे निष्पादित करें।
तो, यह क्या करता है?
एक कॉम्पैक्ट/मरम्मत डेटा फ़ाइल को फिर से लिखती है, किसी भी अप्रयुक्त डेटा पेजों को समाप्त करती है, संगत डेटा पृष्ठों में टेबल और इंडेक्स लिखती है और अगली बार चलाने के बाद सभी सहेजे गए क्वेरीरीफ को फिर से संकलित करने के लिए फ़्लैग करती है। यह तालिकाओं के लिए कुछ मेटाडेटा, और फ़ाइल के शीर्षलेख में अन्य मेटाडाटा और आंतरिक संरचनाओं को भी अद्यतन करता है।
सभी डेटाबेस में "कॉम्पैक्ट" ऑपरेशन का कुछ रूप है क्योंकि उन्हें प्रदर्शन के लिए अनुकूलित किया गया है। डिस्क स्थान सस्ता है, इसलिए कुशलतापूर्वक भंडारण का उपयोग करने के लिए चीजों को लिखने के बजाय, वे पहले उपलब्ध स्थान पर लिखते हैं। इस प्रकार, जेट/एसीई में, यदि आप एक रिकॉर्ड अपडेट करते हैं, तो रिकॉर्ड केवल मूल डेटा पेज पर लिखा जाता है यदि नया डेटा मूल डेटा पेज के भीतर फिट बैठता है। यदि नहीं, तो मूल डेटा पृष्ठ को अप्रयुक्त चिह्नित किया गया है और रिकॉर्ड को पूरी तरह से नए डेटा पृष्ठ पर फिर से लिखा गया है। इस प्रकार, फ़ाइल आंतरिक रूप से खंडित हो सकती है, पूरे फ़ाइल में मिश्रित उपयोग और अप्रयुक्त डेटा पेजों के साथ।
एक कॉम्पैक्ट अच्छी तरह से व्यवस्थित करता है और सभी ढीले स्थान से छुटकारा पाता है। यह प्राथमिक कुंजी ऑर्डर (पीके पर जेट/एसीई क्लस्टर) में डेटा टेबल को फिर से लिखता है, लेकिन यह एकमात्र इंडेक्स है जिसे आप क्लस्टर कर सकते हैं)। इंडेक्स को उस बिंदु पर भी लिखा जाता है, क्योंकि समय के साथ वे उपयोग के साथ खंडित हो जाते हैं।
कॉम्पैक्ट एक ऐसा ऑपरेशन है जो किसी भी जेट/एसीई फ़ाइल के नियमित रखरखाव का हिस्सा होना चाहिए, लेकिन आपको इसे अक्सर नहीं करना चाहिए। यदि आप नियमित रूप से महत्वपूर्ण ब्लोट का अनुभव कर रहे हैं, तो यह सुझाव देता है कि आप अस्थायी डेटा को संग्रहीत/हटाकर अपने बैक-एंड डेटाबेस का गलत उपयोग कर सकते हैं। यदि आपका ऐप रिकॉर्ड जोड़ता है और अपने नियमित संचालन के हिस्से के रूप में उन्हें हटा देता है, तो आपके पास एक डिज़ाइन समस्या है जो आपकी डेटा फ़ाइल को नियमित रूप से ब्लोट करने जा रही है।
उस त्रुटि को ठीक करने के लिए, temp तालिकाओं को एक अलग स्टैंडअलोन एमडीबी/एसीसीडीबी पर ले जाएं ताकि मंथन आपकी मुख्य डेटा फ़ाइल को ब्लोट नहीं कर सके।
इस संदर्भ में लागू होने वाले किसी अन्य नोट पर, सामने उन हिस्सों में प्रकृति की वजह से अलग-अलग तरीकों से ब्लाउड समाप्त होता है। चूंकि यह प्रश्न वीबी से उपयोग किए गए एमडीबी/एसीसीडीबी के बारे में है, इसलिए मैं विवरण में नहीं जाऊंगा, लेकिन यह कहने के लिए पर्याप्त है कि सामने के अंत में कॉम्पैक्ट करना कुछ ऐसा है जो विकास के दौरान आवश्यक है, लेकिन उत्पादन के उपयोग में केवल कुछ ही ही नहीं है। उत्पादन फ्रंट एंड को कॉम्पैक्ट करने का एकमात्र कारण मेटाडेटा अपडेट करना और इसमें संग्रहीत क्वेरी को पुन: संकलित करना है।
डेटा स्ट्रॉइंग कर रहे थे और यदि आप SQL सर्वर बैकएंड का उपयोग करते हैं, तो यह चरण केवल समय की पूरी बर्बादी है? –
हां, यदि बैक एंड पर SQL सर्वर का उपयोग किया जाता है, तो कॉम्पैक्ट ऑपरेशन पर आपके डेटाबेस के बारे में कुछ भी नहीं होगा। –