झूठे को ऑटो अपडेट सांख्यिकी क्यों सेट करें?


10

मुझे SQL सर्वर के लगभग 20 उदाहरण विरासत में मिले हैं, एक व्यापक अधिग्रहण परियोजना के हिस्से के रूप में। मैं प्रदर्शन का आकलन करने की प्रक्रिया में हूं और मुझे यह पसंद नहीं है कि किस तरह से रखरखाव की योजना को लागू किया गया है।

मैं दैनिक कंबल इंडेक्स रियड्स देख रहा हूं (मैं इस से निपट सकता हूं) और आंकड़ों के दैनिक मैनुअल अपडेट भी कर रहा हूं।

लगभग आधे डेटाबेस को ऑटो अपडेट स्टैटिस्टिक्स = गलत पर सेट किया गया है, उन कारणों के लिए जो स्पष्ट नहीं हैं, जैसा कि मुझे बताया गया है कि यह 'परफॉर्मेंस इश्यूज' को कम करने के लिए है ...

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

क्या कोई यह समझा सकता है कि इस सेट को झूठा साबित करने में क्या लाभ होगा, लेकिन इसके बजाय दैनिक मैनुअल अपडेट करना?

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

जवाबों:


6

आप सही हैं, मेरा यह भी मानना ​​है कि ज्यादातर मामलों में Auto Update statisticsयह सच होना चाहिए कि हमें एसक्यूएल सर्वर को यह तय करना चाहिए कि वह आँकड़े कब अपडेट करे और मुझे विश्वास करे कि यह अच्छा काम करता है। जब यह सही हो जाता है तो यह सुनिश्चित करें कि क्षेत्र में डेटा वितरण के बारे में आँकड़े अपडेट किए जाते हैं जो अंततः बेहतर योजना तैयार करने के लिए ऑप्टिमाइज़र की मदद करेंगे। यहां ध्यान देने वाली महत्वपूर्ण बात ऑटो अपडेट आँकड़े आग हैं जब डेटा का 20% तालिका में बदल जाता है। तो आपको ऐसा नहीं लगना चाहिए कि 100K पंक्तियों वाली एक मेज पर यदि 10 पंक्तियों को अपडेट किया जाता है तो स्थिति अपडेट में आग लग जाएगी।

एक और अधिक गहन विश्लेषण पॉल रैंडल द्वारा ब्लॉग में अंडरस्टैंडिंग व्हेन स्टैटिस्टिक्स विल ऑटोमैटिकली अपडेट किया जाता है । इस विकल्प के सही होने पर मुझे कोई कमी नहीं दिखी। हां जब आप इस विकल्प को सही करते हैं तो आप कुछ I / O गतिविधि देख सकते हैं।

महत्वपूर्ण निष्कर्ष जो एक ब्लॉग से आकर्षित कर सकता है

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

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


10

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

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


मैं एक उदाहरण के बारे में सोचने की कोशिश कर रहा था, जहां auto_update_stats वास्तव में समस्याओं का कारण होगा और यह एक महान है - मैं इसे उत्कृष्ट कार्य के लिए दो बार (अगर मैं कर सकता था) साथ ही सामान्य आँकड़ों की देरी से बचने के साथ-साथ इसे बढ़ा दूंगा। प्रश्न
18

1
मेरे पास बड़े डेटाबेस (VLDB) के साथ परिस्थितियाँ थीं, कि auto_update आँकड़े विकल्प चालू है और कार्य दिवस के दौरान इनुपोर्ट्यून समय के दौरान SQL बंद हो जाएगा। मैंने इसे बंद कर दिया और सर्वर और तालिकाओं का निर्धारण करने के बजाय विशिष्ट तालिकाओं और आँकड़ों के लिए मैन्युअल अपडेट के बारे में अधिक रणनीतिक होना पड़ा। इसने मेरे सिस्टम को और अधिक पूर्वानुमान योग्य बना दिया, लेकिन उच्च प्रबंधन लागत (कोई संदेह नहीं) पर, लेकिन घुसपैठ के अपडेट कार्यों से बचने के लिए ऐसा करने की आवश्यकता थी। यदि विशिष्ट इंडेक्स / स्टैट्स मैनेजमेंट के साथ सिस्टम को "कंबलिंग" करना आपकी चीज है, तो इसे छोड़ दें। अन्यथा, कुछ स्थितियों में विस्तृत रणनीति की आवश्यकता हो सकती है।
स्नैपजैग

6

आम तौर पर मैं कहूंगा कि ऑटो अपडेट आँकड़े होना फायदेमंद है। लेकिन किसी भी सेटिंग की तरह, ऐसे कारण हैं जिनसे आप इसे चालू या बंद कर सकते हैं।

एक यह है कि कुछ तालिकाओं में बहुत मंथन होता है, और शायद प्रश्न सटीक आँकड़ों के प्रति बहुत संवेदनशील नहीं होते हैं। ईटीएल या अन्य थोक परिदृश्यों के बारे में सोचें, जहां आप बहुत अधिक डेटा बदल रहे हैं, लेकिन या तो इसे वहां से नहीं पढ़ रहे हैं, या इसे नहीं पढ़ रहे हैं। ऑटो आँकड़े अपडेट को किक करने और I / O का एक गुच्छा पैदा करने के लिए अधिक सटीक आँकड़े प्रदान करने के लिए बहुत अधिक बिंदु नहीं है जो कभी भी उपयोग नहीं किए जाएंगे।

आपके पास ऐसे परिदृश्य भी हो सकते हैं जहां आप दिन भर में कई बार डेटा अपडेट करते हैं, लेकिन जरूरी नहीं कि हर अपडेट के बाद आंकड़े अपडेट किए जाएं। (कहते हैं कि डेटा केवल दिन के कुछ घंटों के दौरान ही प्रदर्शित किया जाता है - इस बीच डेटा को कई बार अपडेट करने की आवश्यकता नहीं होती है, क्योंकि इस बीच डेटा को कभी भी क्वेरी नहीं किया जाएगा।)

या हो सकता है कि आपके पास बस एक भारी काम का बोझ हो। या रीड आमतौर पर पूर्ण स्कैन होते हैं, जहां आंकड़े अत्यंत महत्वपूर्ण नहीं होते हैं।

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