STATISTICS_NORECOMPUTE का उपयोग करने की सलाह


9

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

जैसा कि मैंने परीक्षण और मॉडल वातावरणों की तुलना की है, मैंने देखा है कि मॉडल वातावरण में अधिकांश अनुक्रमणिकाएं STATISTICS_NORECOMPUTEनिर्धारित की गई हैं, ONजबकि परीक्षण में वे नहीं हैं। सभी वातावरण में एक रात का काम होता है जो सभी डेटाबेस के आंकड़ों को अपडेट करता है।

मैंने पहले कभी नहीं निपटा है STATISTICS_NORECOMPUTEइसलिए यहाँ मेरे सवाल हैं। क्या इस सेटिंग से निपटने के दौरान कोई सर्वोत्तम अभ्यास हैं? अगर मैं दिन के अंत में आंकड़े अपडेट कर रहा हूं तो STATISTICS_NORECOMPUTEसभी इंडेक्स पर सभी वातावरणों को चालू करना सबसे अच्छा है ? या वहाँ एक अच्छा कारण नहीं है?

संपादित करें: मैंने यहां किम्बर्ली ट्रिप के ब्लॉगों में से एक को इस विषय पर पाया है जो यह सुझाव देता है कि STATISTICS_NORECOMPUTEसबसे कम उपयोग किया जाना चाहिए। लेकिन मैं अभी भी इसे विश्व स्तर पर बंद करने के बारे में चिंतित हूं। क्या किसी ने यह कोशिश की और उन्हें क्या अनुभव हुआ?


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

1
एक अच्छा मामला STATISTICS_NORECOMPUTE = ON और FILLFACTOR = 100 का उपयोग केवल पढ़ने के लिए लुकअप तालिकाओं के लिए होगा जो केवल DBA द्वारा एक स्क्रिप्ट का उपयोग करके बदल दिए जाते हैं जो परिवर्तनों के बाद FULL के साथ एक INDEX REBUILD करता है; तब इष्टतम आँकड़ों के साथ तालिका में इष्टतम आकार, और कोई अन्य परिवर्तनों के साथ, पुनर्मिलन के आँकड़ों पर विचार करने का कोई कारण नहीं है, या भविष्य के परिवर्तनों पर पृष्ठ विभाजन को कम करने के लिए जगह छोड़ रहा है।
एंटी-कमजोरपासवर्ड

जवाबों:


4

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

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

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

इसके बारे में अधिक सोचने पर, मैं कहूंगा कि वर्तमान रणनीति का कोई मतलब नहीं है। क्या यह सब कुछ के लिए ऑटो-अपडेट आँकड़े छोड़ने से बेहतर है? ऐसा लगता है कि किसी ने ऐसा करने के लिए सोचा था कि यह एक संबद्ध SQL एजेंट नौकरी करने में आसानी-से-प्रबंधन tradeoff के लायक था।

विचार ताजा आँकड़े प्रश्नों (जैसे को रोके बिना उपलब्ध करना था, तो यह ), तो आप सब कुछ के लिए पर स्वत: अपडेट पीठ मोड़ पर विचार कर सकते हैं, और फिर भी पर बारी AUTO_UPDATE_STATISTICS_ASYNCके रूप में अच्छी तरह से। फिर शायद दैनिक के बजाय एक बार / सप्ताह चलाने के लिए जॉब शेड्यूल को बदल दें, क्योंकि आप अभी भी WITH FULLSCANसमय-समय पर अपडेट किए गए आंकड़े चाहते हैं ।

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


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