क्या SQL Server ऑटो-सिक्योर चालू होना सुरक्षित है?


44

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

जवाबों:


70

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

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

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

ऑटो-हटना सक्षम करने के लिए एक बहुत ही सामान्य डेटाबेस सेटिंग है। यह एक अच्छा विचार जैसा लगता है - डेटाबेस से अतिरिक्त स्थान को हटा दें। वहाँ 'अनैच्छिक DBAs' के बहुत सारे हैं (TFS, SharePoint, BizTalk, या बस नियमित रूप से पुराने SQL सर्वर के बारे में सोचते हैं) जो शायद नहीं जानते कि ऑटो-सिकुड़न सकारात्मक रूप से बुराई है।

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

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

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

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

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

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

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

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


क्या कोई तरीका है जिसे आप सिकुड़ने के बाद फिर से अनुक्रमित कर सकते हैं?
लांस रॉबर्ट्स

4
नहीं reindex क्योंकि वह फिर से फ़ाइल बढ़ेगी (पुराने को छोड़ने से पहले नए सूचकांक का निर्माण करती है), लेकिन एक पुनर्गठन करना (या तो मेरे पुराने DBCC INDEXDEFRAG या नए ALTER INDEX के माध्यम से ... REORGANIZE) विखंडन की कीमत पर छंटनी करेगा अधिक आईओ, सीपीयू, लॉगिंग ...
पॉल रैंडल

मैंने देखा कि ऑटोश्रिंक हटाने के बाद श्रोअर का मेमोरी उपयोग अधिक होता है।
user193655

4

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

सभी DBs और उनके ऑटोश्रंक सेटिंग देखें। यदि आपके पास बहुत सारे डेटाबेस हैं, तो एक अंदर घुस जाएगा।

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

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


2
sys.dat डेटाबेस में एक फ़ील्ड is_auto_shrink है (और is_auto-close, is_auto_update_stats, आदि)
पॉल

अद्भुत im googling: मेरे पास एक रिपोर्ट कैसे है जो हमें यह जानने में मदद करती है कि कौन सा ऑटो ऑटिंक के रूप में कॉन्फ़िगर किया गया है और आपका कोड अच्छा चल रहा है और हमारे लिए सभी डीबी से अच्छी रिपोर्ट उत्पन्न करता है
कृपाण tabatabaee yazdi

2

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

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

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


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

1

TechNet पर एक व्हाइटपेपर उपलब्ध है जो SQL रखरखाव को अधिक विस्तार से बताता है।

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


दुर्भाग्य से कि व्हाइटपेपर केवल SharePoint स्थापनाओं पर लक्षित होता है और वास्तव में इसमें कुछ त्रुटियां होती हैं। मैंने अभी वर्तमान SharePoint MCM वर्ग को व्हाइटपेपर के लेखक बिल बेयर के साथ पढ़ाने में समय बिताया है।
पॉल रैंडल

3
डेटाबेस रखरखाव का एक अच्छा सामान्य परिचय मेरे TechNet पत्रिका लेख में प्रभावी डेटाबेस रखरखाव विषय पर है - Technet.microsoft.com/en-us/magazine/cc671165.aspx
पॉल रैंडल

1

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

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

1

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

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


1

इस वीडियो ट्यूटोरियल को भी देखें…।

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

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