डिस्क स्थान को रिलीज़ करने के लिए MS SQL सर्वर प्राप्त करें


9

एक खराब प्रबंधित डेटाबेस तालिका भारी हो गई है। अनाथ रिकॉर्ड्स के 48 + गिग्स। मैं इसे साफ करने की कोशिश कर रहा हूं और अपनी खतरनाक पूर्ण हार्ड ड्राइव को वापस सामान्य स्थिति में ला रहा हूं। मैं इस तालिका से लगभग 400 मिलियन रिकॉर्ड हटा रहा हूँ। यह मेरे टाइप के अनुसार चल रहा है। मुझे लगता है कि मैं अपने हार्ड ड्राइव स्पेस में कोई गिरावट नहीं देख रहा हूं, लेकिन मैं सिस्टम टेबल क्वेरी पर मेमोरी ड्रॉप देख रहा हूं, मैं टेबल साइज पाने के लिए दौड़ रहा हूं। डेटाबेस "सिंपल रिकवरी मॉडल" का उपयोग कर रहा है।

इस तरह की प्रतिक्रिया के साथ कई सवाल हैं, जिसमें कहा गया है कि आपको डेटाबेस को सिकोड़ने की आवश्यकता है। लेकिन वे बताते हैं कि खंडित डेटा आदि के कारण यह कितना बुरा / डरावना है।

  1. चूंकि डेटाबेस में यह आकार नहीं होना चाहिए। क्या इसे सिकोड़ना मेरे लिए अभी भी बुरा है?
  2. यह एक उत्पादन डेटाबेस है। अगर मैं इसे सिकोड़ता हूं तो यह डाउनटाइम का कारण बनेगा या डेटाबेस को लॉक करेगा?
  3. SQL सर्वर प्रबंधन स्टूडियो में आपके पास सिकुड़ने, डेटाबेस या फ़ाइलों के लिए दो विकल्प हैं। मेरी स्थिति को देखते हुए सबसे अच्छा विकल्प क्या होगा?
  4. क्या डीबी होना चाहिए मुक्त स्थान के प्रतिशत पर एक नियम है?

यहां तक ​​कि हटना का टैग विवरण पढ़ने से मुझे ऐसा करने की इच्छा नहीं होती है। क्या कोई और तरीका है?

जवाबों:


14

मैं इस तालिका से लगभग 400 मिलियन रिकॉर्ड हटा रहा हूँ।

उम्मीद है, आप इसे कर रहे हैं - ब्लोटिंग लेनदेन लॉग से बचने के लिए।

ध्यान दें कि मुझे अपने हार्ड ड्राइव स्पेस में कोई गिरावट नहीं दिख रही है

आप अभ्यस्त, के रूप में आप स्पष्ट रूप से अंतरिक्ष को रिहा करने के लिए डेटाबेस फ़ाइल को छोटा करना होगा। बस रिकॉर्ड्स को हटाते हुए, SQL सर्वर OS पर वापस स्पेस जारी नहीं करेगा

  1. चूंकि डेटाबेस में यह आकार नहीं होना चाहिए। क्या इसे सिकोड़ना मेरे लिए अभी भी बुरा है?

यह आमतौर पर एक बुरा अभ्यास है क्योंकि डेटाबेस को ठीक से संरक्षित किया जाना चाहिए। यदि आप 100% सुनिश्चित हैं कि आपका डेटाबेस फिर से इस आकार का नहीं हो रहा है, तो आपके लिए डेटाबेस (अपने परिदृश्य में) को सिकोड़ना ठीक है

  1. यह एक उत्पादन डेटाबेस है। अगर मैं इसे सिकोड़ता हूं तो यह डाउनटाइम का कारण बनेगा या डेटाबेस को लॉक करेगा?

डेटाबेस सिकोड़ना एक बहुत ही IO गहन है। DBCC SHRINKFILEरखरखाव की खिड़की के दौरान या कम से कम गतिविधि होने पर इसका उपयोग करने की सलाह दी जाती है ।

  1. प्रबंधन स्टूडियो में आपके पास दो विकल्प हैं, डेटाबेस या फाइलें। मेरी स्थिति को देखते हुए सबसे अच्छा विकल्प क्या होगा?

छोटा करने के लिए आपको TSQL का उपयोग करना चाहिए। (चूंकि आपने पूछा, डेटाबेस के बजाय FILE सिकुड़ने का तरीका है)। आप चंक्स में सिकुड़न डेटाबेस का उपयोग कर सकते हैं - चंक्स में सिकोड़ने के लिए tsql स्क्रिप्ट।

याद रखें कि जब आप सिकुड़ते हैं, तो आप अपने अनुक्रमित टुकड़े कर रहे हैं।

  1. क्या डीबी होना चाहिए मुक्त स्थान के प्रतिशत पर एक नियम है?

आप डेटाबेस लेख के लिए डिस्क स्थान आवश्यकताओं का अनुमान लगाने का उल्लेख कर सकते हैं । कोई फिक्स नियम नहीं है, आपको इस बात का ध्यान रखना होगा कि आपका डेटाबेस कैसे बढ़ने की उम्मीद है। आपको अपने डेटाबेस के ऑटोग्रॉथ को भी ध्यान में रखना होगा ।

सन्दर्भ: लेन-देन में वृद्धि क्यों होती है या अंतरिक्ष से बाहर चलती है?


5

SQL सर्वर में DB सिकुड़ने के कारण आपके पास अच्छा कारण है अक्सर "चूसना"। एसक्यूएल 2005 में स्टोरेज इंजन के प्रमुख पॉल रैंडल ने कहा, श्रिंकडीबी को बहुत खराब तरीके से लिखा गया है। यह डेटा को बहुत ही अंत में ले जाकर खाली स्थान प्राप्त करेगा और इसे बहुत शुरुआत में डाल देगा और इसे तब तक करता रहेगा जब तक कि इसके पास DB फाइलों के 'अंत' में खाली जगह न हो। इस बिंदु पर यह SQL सर्वर से स्थान को मुक्त कर सकता है और इसे OS को वापस दे सकता है। आप प्रभावी रूप से अपनी डेटाबेस फ़ाइलों को उलट रहे हैं इस प्रकार आप आमतौर पर बड़े पैमाने पर विखंडन देखेंगे। आप इस ब्लॉग पोस्ट या इस एमसीएम इंटर्नल वीडियो पर उनके विचारों के बारे में पढ़ सकते हैं

सब कुछ के साथ, आपको वास्तव में पहले अपने वातावरण में इनका परीक्षण करना चाहिए। इसे करने का एक बेहतर तरीका डेटा को एक अलग फ़ाइलग्रुप में ले जाना है। आप क्लस्टर किए गए अनुक्रमणिका के साथ एक ऑनलाइन अनुक्रमणिका पुन: निर्माण कर सकते हैं और फिर नए फ़ाइल समूह में reindex कर सकते हैं। फिर आप पुराने को छोड़ सकते हैं और अंतरिक्ष को छोड़ सकते हैं और लगभग कोई विखंडन नहीं कर सकते हैं। ध्यान दें कि यह लगभग 120% अतिरिक्त स्थान लेगा, जबकि यह इसके माध्यम से काम कर रहा है। इसके साथ समस्या यह है कि आपको अतिरिक्त अतिरिक्त स्थान की आवश्यकता है जो ऐसा दिखता है जैसे आपके पास नहीं हो सकता है। यह एक एंटरप्राइज फीचर है।

यदि नि: शुल्क स्थान प्रीमियम के इतने हिस्से में है, तो आपको लंबे समय तक चलने वाली प्रक्रियाओं से बचने के लिए बुलेट को काटने और धीरे-धीरे डीबी को एक छोटे से हिस्से को छोटा करना पड़ सकता है। ध्यान दें कि आपका डेटा बहुत अधिक खंडित हो जाएगा और आप फिर से सब कुछ फिर से लिखना चाहेंगे। ध्यान दें कि सब कुछ reindexing के बाद, आप फिर अपने इस्तेमाल की जगह को थोड़ा सा गुब्बारा करेंगे और अतिरिक्त खाली स्थान होने पर वापस जाएंगे। यहां ब्रेंट की सलाह देखें ।

जहां तक ​​आपके लिए कितना खाली स्थान अच्छा है, यह एक बात है कि आप विखंडन और फ़ाइल विकास गतिविधियों को कितना बर्दाश्त कर सकते हैं। IFI सक्षम होने के साथ, फ़ाइल की वृद्धि लगभग तुरंत होती है लेकिन आपको अभी भी विखंडन मिलता है। अंगूठे का एक अच्छा नियम यह है कि जितना आपको लगता है कि अंतरिक्ष की जरूरत है, प्रचार करें, या विकास की निगरानी करें और यदि आप हैं तो समय-समय पर समायोजित करें। इससे शारीरिक विखंडन कम होता है।

इसके अलावा लॉग फ़ाइल वृद्धि एक बहुत अधिक महत्वपूर्ण है। अतिरिक्त लॉग फाइलें VLF विखंडन का कारण बन सकती हैं। यह आपके रेस्टोर को बहुत धीमा बनाता है और चेकपॉइंट / ट्रंकट्स को प्रभावित कर सकता है। यहां कुछ प्रदर्शन जोखिम हैं जो आप एक खंडित लॉग के साथ लेते हैं। एक है DBCC LOGINFO();प्रत्येक डेटाबेस पर। किम ट्रिप प्रति 50ish के आसपास संख्या रखने की कोशिश करें, लेकिन यदि आप सैकड़ों देखते हैं, तो आपके पास विखंडन मुद्दे हैं, जिसका अर्थ है कि आपकी लॉग फ़ाइलों को संचालन का समर्थन करने के लिए बढ़ना था। पॉल रान्डल के अनुसार आपकी लॉग फ़ाइल क्या होनी चाहिए, यह देखने का एक अच्छा तरीका है कि इसे एक सप्ताह के लिए बढ़ने दें और रीइन्डेक्स करें। यह एक अच्छा बिंदु हो सकता है, शायद आप सिर्फ मामले में वहां पर थोड़ी अधिक खाली जगह फेंक सकते हैं। सुनिश्चित करें कि आपके लॉग DBCC LOGINFO () के साथ खंडित नहीं हैं; फिर से और यदि वे हैं, तो इसका मतलब है कि वे बहुत बढ़ गए। का उपयोग करके लॉग फ़ाइल को सिकोड़ें और पुनः विस्तारित करेंयह विधि


2

यह सुनिश्चित करने के लिए कि आपके सर्वर को आपकी संग्रहण आवश्यकताओं का आकलन करने और उचित रूप से हार्डवेयर / होस्टिंग सेवाओं की योजना बनाने में पर्याप्त समय नहीं लगता है (प्रश्न 4 देखें) को सिकोड़ना आपके लिए ठीक है। नहीं, यह इसे बंद नहीं करेगा। प्रतिबंध देखें । डेटाबेस को सिकोड़ें क्योंकि यह चीजों को सरल रखता है।

मैं अध्ययन का संचालन करने और योजना लिखने के लिए विशेषज्ञता का अनुबंध करने का सुझाव देता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.