सांख्यिकी कब अपडेट करें?


42

मुझे एक अनुरक्षण योजना विरासत में मिली है जो निम्नलिखित कार्य करती है:

  • पुराने डेटा को क्लीनअप करें
  • DB अखंडता की जाँच करता है
  • डेटाबेस और लेन-देन लॉग बैकअप करता है
  • हमारे सूचकांक का पुनर्गठन करता है
  • अपडेट आँकड़े
  • पुराने बैकअप और रखरखाव योजना फ़ाइलों को हटा दें

23 मिनट के रखरखाव योजना में, सांख्यिकी को अपडेट करने में 13 मिनट लगते हैं। इस 13 मिनट की अवधि के दौरान, डेटाबेस तक पहुंच अवरुद्ध है (या कम से कम, इस डीबी से हमारे दूसरों को प्रतिकृति रोक दी गई है)।

मेरा सवाल यह है कि:

हमें कब आँकड़े अपडेट करने चाहिए और क्यों?

ऐसा लगता है कि हमें हर दिन की तुलना में कम काम करना चाहिए। मैं हमें "सिर्फ इसलिए" से बाहर निकालने की कोशिश कर रहा हूं कि अनावश्यक रखरखाव करने का मन बना रहा है।


2
कितनी बार / कितनी पंक्तियाँ सम्मिलित / अद्यतन / हटाई जाती हैं? मेरे लिए यह निर्णायक कारक है।
JNK

@JNK हम पूरे DB में प्रति दिन ~ 70,000 पंक्तियाँ डालते हैं। अद्यतन ~ 100 पंक्तियों एक महीने।
प्याज-नाइट

1 - यह अधिक प्रासंगिक है यदि हम TABLE द्वारा जानते हैं कि कितनी पंक्तियाँ हैं, और 2-एक प्रतिशत है। 1 मीटर की तालिका में प्रति दिन 70k पंक्तियाँ 500m की तालिका की तुलना में बहुत भिन्न होती हैं
JNK

मैं ola.hallengren.com/ जैसी किसी चीज़ का उपयोग करने की सलाह दूंगा। यह समाधान केवल पुनर्निर्माण / पुनर्गठित करता है और अपडेट करता है कि इस तरह से आपकी जरूरत है कि आपका मुख्य योजना में कितना समय लग सकता है और लॉग स्पेस का एक छेद भी बच सकता है।
पीटर

जवाबों:


28

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

सटीक रूप से आपको कितनी बार आंकड़े अपडेट करने चाहिए, यह इस बात पर बहुत निर्भर करता है कि आपके सूचकांक और डेटा को कितना डेटा संशोधित किया जा रहा है । अगर वहाँ बहुत कम संशोधन (है INSERT, UPDATE, DELETE) के आंकड़ों के, तो आप अद्यतन आंकड़े इस काम के लिए एक और अधिक निराला अनुसूची हो सकता था।

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

यदि आप अपने डेटाबेस के लिए ऑटो अपडेट सांख्यिकी का उपयोग कर रहे हैं, तो आँकड़े अद्यतन होने की दहलीज के लिए यह संदर्भ देखें ।


हम सप्ताह में एक बार अनुक्रमणिका का पुनर्निर्माण करते हैं।
प्याज-नाइट

5
@ प्याज-नाइट तब आप सप्ताह में एक बार आँकड़ों को अद्यतन कर रहे होते हैं जब आप अपने अनुक्रमितों का पुनर्निर्माण करते हैं। यदि आप डेटाबेस में एक कंबल सूचकांक पुनर्निर्माण कर रहे हैं तो यह पर्याप्त हो सकता है।
थॉमस स्ट्रिंगर

25

सांख्यिकी कब अपडेट करें?

अगर और केवल अगर ऑटो अपडेट आँकड़े सुविधा आपकी आवश्यकताओं के लिए पर्याप्त नहीं है। मेरा मतलब है कि अगर ऑटो क्रिएट और ऑटो अपडेट आँकड़े चालू हैं और आपको एक खराब क्वेरी प्लान मिल रहा है क्योंकि आँकड़े सही या चालू नहीं हैं तो यह एक अच्छा विचार हो सकता है कि सांख्यिकी निर्माण और अद्यतन पर नियंत्रण हो। लेकिन अगर आप अपने sql सर्वर प्रदर्शन और क्वेरी निष्पादन समय के साथ ठीक हैं।

तो मैं अपने रखरखाव की योजना से अद्यतन सांख्यिकी आदेश को रोकने का सुझाव देता हूं

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


यदि आप सांख्यिकी को मैन्युअल रूप से अपडेट करना चाहते हैं, तो आपको पहले पता होना चाहिए कि सांख्यिकी स्वचालित रूप से अपडेट की जाती है

यदि SQL सर्वर क्वेरी ऑप्टिमाइज़र को किसी तालिका में किसी विशेष स्तंभ के लिए आँकड़ों की आवश्यकता होती है, जो पिछली बार आँकड़ों के निर्माण या अद्यतन होने के बाद से पर्याप्त अद्यतन गतिविधि से गुज़रा है, तो SQL सर्वर स्वचालित रूप से स्तंभ मानों का नमूना (स्वतः अद्यतन आँकड़ों का उपयोग करके) आँकड़ों को अद्यतन करता है । क्वेरी ऑप्टिमाइज़ेशन या संकलित योजना के निष्पादन से आँकड़ों का अद्यतन स्वतः हो जाता है, और इसमें क्वेरी में निर्दिष्ट कॉलमों का एक सबसेट शामिल होता है। यदि AUTO_UPDATE_STATISTCS_ASYNC बंद है, तो आंकड़े क्वेरी संकलन से पहले अपडेट किए जाते हैं

यहाँ अच्छे लेख हैं जो अद्यतन आँकड़े SQL सर्वर में ट्रिगर होने पर बोलते हैं

  1. सरल-टॉक सेक्शन से 13. सांख्यिकी-ट्रिगर के ऑटो-अपडेट कब होता है?
  2. support.microsoft सेक्शन: ऑटोस्टैट्स निर्धारण को स्वचालित करना
  3. msdn.microsoft अनुभाग: SQL Server 2008 में सांख्यिकी को बनाए रखना

आँकड़ों को ट्रिगर करने के बाद यह जानने के बाद कि आंकड़ों को मैन्युअल रूप से अपडेट करने के लिए आपको यह तय करने में मदद मिलेगी

सांख्यिकी और प्रदर्शन पर इसके प्रभाव के बारे में अधिक जानने के लिए मैं BrentOzar और Kimberly को बहुत अच्छे ब्लॉग और ब्लॉगर्स में sqlskills की सलाह देता हूं

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