सवाल एसक्यूएल सर्वर ऑटो-सिकंक चालू होने के लिए सुरक्षित है?


ऐसे कई SQL सर्वर विकल्प हैं जिन्हें डेटाबेस के लिए सक्षम किया जा सकता है, और सबसे गलत समझा जा सकता है कि ऑटो-सिकुड़ना है। क्या ये सुरक्षित है? यदि नहीं, तो क्यों नहीं?


42
2018-06-05 23:04


मूल




जवाब:


(मैंने मूल रूप से एक नियमित प्रश्न के रूप में पूछा लेकिन फिर सही विधि पता चला - धन्यवाद ब्रेंटो)

नहीं कभी नहीं।

मैं सर्वरफॉल्ट पर कई बार इस बार आया हूं और कुछ अच्छी सलाह के साथ एक अच्छा व्यापक दर्शक तक पहुंचना चाहता हूं। अगर लोग चीजों को करने के इस तरीके से फंस जाते हैं, तो डाउनवोट और मैं इसे खुशी से हटा दूंगा।

स्वत: संकीर्ण करने के लिए एक बहुत ही आम डेटाबेस सेटिंग है। यह एक अच्छा विचार की तरह लगता है - डेटाबेस से अतिरिक्त जगह को हटा दें। वहाँ बहुत सारे 'अनैच्छिक डीबीए' हैं (टीएफएस, शेयरपॉइंट, बिज़टॉक, या सिर्फ नियमित पुराने एसक्यूएल सर्वर सोचें) जो शायद नहीं जानते कि ऑटो-सिकुड़ सकारात्मक रूप से बुरा है।

माइक्रोसॉफ्ट में जबकि मैं SQL सर्वर स्टोरेज इंजन का मालिक था और ऑटो-सिकुड़ सुविधा को हटाने की कोशिश की, लेकिन इसे पीछे की संगतता के लिए रहना पड़ा।

ऑटो-सिकुंक इतनी खराब क्यों है?

डेटाबेस फिर से बढ़ने की संभावना है, तो इसे क्यों कम करें?

  1. हटना-बढ़ने-संकीर्ण-बढ़ने से फ़ाइल-सिस्टम स्तर विखंडन होता है और बहुत सारे संसाधन लेते हैं।
  2. जब आप इसे पसंद करते हैं तो आप नियंत्रित नहीं कर सकते (भले ही यह नियमित-आश है)
  3. यह बहुत सारे संसाधनों का उपयोग करता है। डेटाबेस में घूमने वाले पेजों को सीपीयू, आईओओ के बहुत सारे लेते हैं, और बहुत से लेनदेन लॉग उत्पन्न करते हैं।
  4. यहां असली किकर है: डेटा फ़ाइल सिकुड़ती है (चाहे ऑटो- या नहीं) बड़े पैमाने पर इंडेक्स विखंडन का कारण बनती है, जिससे खराब प्रदर्शन होता है।

मैंने कुछ समय पहले एक ब्लॉग पोस्ट किया था जिसमें एक उदाहरण एसक्यूएल स्क्रिप्ट है जो इससे उत्पन्न होने वाली समस्याओं को दिखाती है और कुछ और विस्तार से बताती है। देख ऑटो-सिकुड़ें - इसे बंद करें! (मेरे ब्लॉग पर ऐसा कोई विज्ञापन या जंक नहीं है)। लॉग फ़ाइल को कम करने के साथ इस भ्रमित न हों, जो अवसर पर उपयोगी और आवश्यक है।

तो अपने आप को एक पक्ष करो - अपनी डेटाबेस सेटिंग्स में देखो और ऑटो-सिकुड़ बंद करें। आपको उसी कारण से, अपनी रखरखाव योजनाओं में भी कमी नहीं होनी चाहिए। अपने सहयोगियों को शब्द फैलाओ।

संपादित करें: मुझे इसे जोड़ना चाहिए, दूसरे जवाब से याद दिलाया गया है - एक आम गलत धारणा है कि एक संक्रमित संचालन में बाधा डालने से भ्रष्टाचार हो सकता है। नहीं, यह नहीं होगा। मैं SQL सर्वर में संकुचित कोड का मालिक था - यह वर्तमान पृष्ठ को वापस ले जाता है कि अगर बाधित हो तो यह कर रहा है।

उम्मीद है की यह मदद करेगा!


67



क्या कोई रास्ता है कि आप एक सिकुड़ने के बाद सही ढंग से फिर से अनुक्रमित कर सकते हैं? - Lance Roberts
रीइन्डेक्स नहीं है क्योंकि यह फ़ाइल को फिर से बढ़ाएगा (पुराने को छोड़ने से पहले नई अनुक्रमणिका बनाता है), लेकिन एक पुनर्गठन कर रहा है (या तो मेरे पुराने डीबीसीसी इंडेक्सडेएफआरएजी या नए एल्टर इंडेक्स के माध्यम से ... पुनर्गठन) विखंडन को हल करेगा अधिक आईओ, सीपीयू, लॉगिंग ... - Paul Randal
मैंने देखा कि ऑटोश्रिंक को हटाने के बाद srrver का स्मृति उपयोग अधिक है। - user193655


बेशक, पॉल सही है।

सभी डीबी और उनकी ऑटोश्रिंक सेटिंग देखें। यदि आपके पास बहुत सारे डेटाबेस हैं, तो कोई छेड़छाड़ करेगा।

sp_msforeachdb  @command1 = 'Select ''[?]'',DATABASEPROPERTYEX(''?'',''IsAutoShrink'')'

क्या यह डीएमवी में कहीं है .... मुझे आश्चर्य है।


4



sys.databases में फ़ील्ड is_auto_shrink है (और is_auto-close, is_auto_update_stats, आदि) है - Paul Randal
अद्भुत मैं m googling: मेरे पास एक रिपोर्ट कैसे मिली है जो हमें यह जानने में मदद करती है कि कौन से डीबीएस ऑटोश्रिंक के रूप में कॉन्फ़िगर किए गए हैं और आपका कोड अच्छा चल रहा है और हमारे लिए सभी डीबी से अच्छी रिपोर्ट जेनरेट करता है - saber tabatabaee yazdi


यह "असुरक्षित" नहीं है - इससे कुछ भी नुकसान नहीं पहुंचाएगा।

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

एक्सप्रेस को छोड़कर सभी एमएसएसएलएल संस्करणों में सभी डेटाबेस के लिए आईआईआरसी डिफ़ॉल्ट रूप से बंद है।


2



श्रृंगार निर्धारित नहीं किए जाने चाहिए - वे समस्याओं के कारण वास्तव में दुर्लभ परिचालन होना चाहिए। मैं बैकअप के बाद संकीर्ण करने के बारे में आपकी टिप्पणी को समझ नहीं पा रहा हूं - संकीर्ण ऑपरेशन द्वारा उत्पन्न लॉग रिकॉर्ड अगले लेनदेन लॉग बैकअप द्वारा उठाए जाएंगे, चाहे आप इसे कब करते हैं या आप कौन से अन्य बैकअप लेते हैं। धन्यवाद - Paul Randal


टेकनेट पर एक श्वेतपत्र उपलब्ध है जो एसक्यूएल रखरखाव को और विस्तार से बताता है।

http://technet.microsoft.com/en-us/library/cc262731.aspx


1



दुर्भाग्यवश कि श्वेतपत्र का लक्ष्य केवल शेयरपॉइंट प्रतिष्ठानों के लिए है और वास्तव में इसमें कुछ त्रुटियां हैं। मैंने वर्तमान शेयरपॉइंट एमसीएम कक्षा को व्हाइटपेपर के लेखक बिल बायर के साथ पढ़ाने में समय बिताया। - Paul Randal
डेटाबेस रखरखाव के लिए एक अच्छा सामान्य परिचय विषय पर मेरे TechNet पत्रिका लेख में प्रभावी डेटाबेस रखरखाव है - technet.microsoft.com/en-us/magazine/cc671165.aspx। - Paul Randal


मैंने Autogrow और Autoshrink दोनों सक्षम के साथ एक SQL सर्वर देखा है। यह (अपेक्षाकृत शक्तिशाली) सर्वर बहुत धीमा था, क्योंकि यह सब दिन पूरे दिन घट गया था और डेटाबेस फ़ाइलों को बढ़ाना था। Autoshrink उपयोगी हो सकता है, लेकिन मैं दो चीजों की सिफारिश करता हूं:

  1. डिफ़ॉल्ट रूप से Autoshrink बंद करें।
  2. अपने सर्वर कॉन्फ़िगरेशन को दस्तावेज़ करें, इसलिए आप जानते हैं कि ऑटोग्रो और ऑटोश्रिंक सक्षम हैं और वे कहां नहीं हैं।

1





एकमात्र समय मुझे डेटाबेस को कम करने के लिए मजबूर किया गया था, कम डिस्क स्थान (उत्पादन डेटाबेस को अपर्याप्त रखने के लिए अपर्याप्त) के साथ एक परीक्षण सर्वर पर एक प्रतिलिपि ताज़ा करना था।

उत्पादन डेटाबेस की फ़ाइल में उदार मुक्त स्थान था, दुर्भाग्यवश आपको उसी फ़ाइल (आकार) आकार वाले डेटाबेस को पुनर्स्थापित करना होगा जैसा आपने इसका समर्थन किया है। तो इसका समर्थन करने से पहले उत्पादन को कम करने के अलावा कोई विकल्प नहीं था। (संकोच में उम्र लग गई, बहुत सारे संसाधनों का उपभोग किया गया था और बाद में लेनदेन लॉग वृद्धि समस्याग्रस्त थी।)


1





यह वीडियो ट्यूटोरियल भी देखें ....

देखें पॉल रैंडल दर्शाते हैं कि कैसे संकुचन और ऑटो-सिकुड़ने से आपके डेटाबेस के लिए गंभीर विखंडन समस्याएं हो सकती हैं http://wtv.watchtechvideos.com/topic194.html


1