जबकि सिकुड़ना वास्तव में यहाँ वर्णित कारणों के लिए खतरनाक है। जिमबो के जवाब और जॉन के जवाब के बीच एक खुशहाल माध्यम है ... आपको हमेशा गंभीरता से विचार करना चाहिए कि आप अपने डेटाबेस को सिकोड़ना चाहते हैं या नहीं।
एक आदर्श दुनिया में - आप अपने DB को विकसित करने के लिए बहुत सारी खाली जगह बनायेंगे। मैं इस "राइट साइज़िंग" को आपका डेटाबेस कहता हूं। आप इस खाली जगह को वहीं रहने देंगे और इसे वापस देने का प्रयास नहीं करेंगे और अपने कुल आकार को अपने उपयोग किए गए आकार पर ही रखेंगे .. क्यों? क्योंकि आपका डेटाबेस अंततः फिर से बढ़ेगा .. फिर आप फिर से सिकुड़ेंगे .. और आप बेकार के सिकुड़ के इस भयानक पैटर्न में फंस जाएंगे, इसके बाद वृद्धि होगी - और पूरे समय, जैसा कि कुछ ने बताया है, आप होंगे अपने सूचकांक विखंडन में वृद्धि।
मैंने इस बारे में ब्लॉग किया है जहाँ मैंने लोगों को " उस सिकुड़ने वाले बटन को मत छुओ! " पर कभी-कभी ... कभी-कभी आपको ज़रूरत होती है। यदि आपके पास एक बड़ा डेटाबेस है, तो बस महत्वपूर्ण स्थान को मुक्त कर दें और कभी भी इसमें वापस बढ़ने की उम्मीद न करें - अच्छी तरह से फिर एक समय के ऑपरेशन के रूप में सिकुड़ने पर विचार करना ठीक है जब तक कि आप पुनर्निर्माण के माध्यम से बाद में अपने सूचकांक विखंडन की देखभाल कर सकते हैं उन्हें। सिकुड़ने का कार्य समय लेने वाला हो सकता है इसलिए आप इसे ऐसे समय के लिए नियोजित करना चाहेंगे जहाँ आप सिकुड़ते हुए उस मूल्य का भुगतान कर सकें। खाली डीबी बनाने और उसमें डेटा कॉपी करने का तरीका काम करता है - लेकिन यह बड़े डेटाबेस और बहुत सारे डेटा के साथ बहुत मुश्किल हो सकता है।
यदि आप भविष्य में सामान्य उपयोग और विकास पैटर्न के माध्यम से उस स्थान को वापस डीबी में जोड़ने की योजना बनाते हैं, तो आप बस उस स्थान को छोड़ना चाहते हैं।
भी
आपने कहा कि आपने अपना लेन-देन लॉग "क्लियर" कर लिया है। मुझे यह जानने के लिए उत्सुक होना चाहिए कि आपने यह कैसे किया, लेकिन जैसा कि आपने मेरे द्वारा साझा की गई पोस्ट को पढ़ा है और श्रृंखला के अन्य लोगों ने आपको लेन-देन प्रबंधन पर कुछ सुझाव दिए हैं। लेकिन संक्षेप में - यदि आप पूर्ण पुनर्प्राप्ति मोड में हैं, तो आपको लॉग को पुन: उपयोग करने के लिए नियमित लॉग बैकअप लेना चाहिए। अन्यथा - पूर्ण मोड में रहते हुए कोई लॉग बैकअप के साथ - लॉग फ़ाइल बढ़ती और बढ़ती रहती है और बढ़ती रहती है और जो आपने किया है उसे हमेशा बचाता है क्योंकि आपने एसक्यूएल को बताया था कि आप क्रैश रिकवरी के लिए उस लॉग को बनाए रखना नहीं चाहते हैं, लेकिन एक रखना चाहते हैं पुनर्प्राप्ति उद्देश्यों के लिए समय में एक विशिष्ट बिंदु पर पुनर्प्राप्त करने के लिए लेनदेन / पूर्ववत लेनदेन को फिर से चलाने के लिए इसका मैन्युअल बैकअप ... यदि आप सरल हैं और लॉग को अत्यधिक बढ़ते हुए देखते हैं,BEGIN TRAN ... do work.... COMMIT TRAN
या क्या आपने अभी एक बड़ा DELETE
बयान जारी किया है और एक निहित लेनदेन में डेटा की पूरी गड़बड़ी को हटा दिया है। '
मैं यह भी मान रहा हूं कि आप अपने फाइल सिस्टम पर इस खाली जगह की तलाश कर रहे हैं। यदि आप इसे SQL के भीतर और उस बड़ी फ़ाइल के भीतर देख रहे हैं - तो ऐसा हो सकता है कि आप अपने ऑपरेशन के तुरंत बाद अगर आप भूत सफाई का इंतजार कर रहे हैं तो पूरा हो जाए। भूत सफाई के बारे में पॉल रान्डल ब्लॉग ।