कैसे जवाब दिया जाए कि अचानक हमें इंडेक्स या क्वेरी की आवश्यकता क्यों है


11

मैं 3 साल के अनुभव के साथ जूनियर डीबीए हूं। हमारा काम प्रश्नों को ठीक-ठीक करना या डेवलपर्स को सलाह देना है कि विशेष कोड को फिर से लिखा जाना चाहिए या इंडेक्स की आवश्यकता है।

एक साधारण सवाल देव टीम अक्सर पूछती है: "कल यह ठीक चला, अचानक क्या बदल गया?" और हमें बुनियादी ढाँचे की जाँच करने के लिए कहा जाएगा। किसी भी समस्या पर पहली प्रतिक्रिया हमेशा बुनियादी ढांचे पर अधिकतम दोष लगाने की प्रतीत होती है जो हमेशा सर्वप्रथम मान्य होता है।

विकास टीम द्वारा हमें "क्या बदला हुआ" सवालों का जवाब देना चाहिए? क्या आप लोगों ने कभी भी उसी स्थिति का सामना किया था? यदि हां, तो कृपया अपना अनुभव साझा करें।

जवाबों:


10

कैसे उत्तर दें जो देव द्वारा प्रश्न को बदले?

यह न केवल DEV के साथ एक बहुत ही सामान्य प्रश्न है, यह आईटी और व्यवसाय में हर टीम पर लागू होता है।

किया बदल गया ? ==> तथ्यों और आंकड़ों के द्वारा उत्तर दिया जा सकता है।

तथ्य उदाहरण के लिए देखें

  • डेटाबेस तक पहुँचने वाले उपयोगकर्ताओं की मात्रा बढ़ाएँ?
  • सर्वर कॉन्फ़िगरेशन पैरामीटर में कोई बदलाव?
  • डेटाबेस रखरखाव - अपडेट आँकड़े, अनुक्रमणिका का पुन: निर्माण / पुनर्निर्माण नहीं किया जा रहा है? इसके कारण योजनाएँ गलत तरीके से उत्पन्न हो रही हैं!
  • आंकड़ों की मात्रा बढ़ी है?
  • नेटवर्क पक्ष में परिवर्तन किए गए थे, ओएस पैच किया गया था और / या एक नया सर्विस पैक या सीक्यूएल सर्वर के लिए सीयू तैनात किया गया था - बिना आपके एप्लिकेशन व्यापार चक्र के पूर्ण प्रतिगमन परीक्षण किए बिना ?
  • अंतर्निहित SAN अचानक धीमा हो गया है?

यदि आपके पास दिखाने के लिए आंकड़े हैं तो आंकड़े निकाले जा सकते हैं। उदाहरण के लिए :

  • इस स्थिति के दौरान आपके सर्वर को आधारभूत बनाना महत्वपूर्ण है। यह दोषपूर्ण खेल को कम करेगा क्योंकि आप ठोस आंकड़ों के साथ तथ्यों का समर्थन कर सकते हैं।
  • DMV या किसी तालिका में sp_whoisactive का उपयोग करके डेटा एकत्र करना शुरू करें, ताकि एक sql सर्वर रिबूट के बाद डेटा कायम रहे।

(आपको अपने वातावरण और जरूरतों के आधार पर वर्कआउट करना है, कितनी बार डेटा इकट्ठा करना है / किस डेटा को इकट्ठा करना है और कितना रिटेंशन पीरियड होगा) या (आप sqlsentry या idera के डायग्नोस्टिक मैनेजर जैसे थर्ड पार्टी सॉफ्टवेयर में निवेश कर सकते हैं ) आपके लिए उपरोक्त कार्य करेगा)


7

ठीक है, आप एक अलग योजना प्राप्त कर सकते हैं क्योंकि:

  • योजना को कैश से बाहर निकाला जा सकता था, इसके कारण:
    • एक सेवा पुनः आरंभ
    • योजना कैश के मैनुअल समाशोधन
    • सेवा पुनरारंभ या विफलता
    • एक अनजाने परिवर्तन, उदाहरण के लिए कुछ sp_configureपरिवर्तन कैश फ्लश कर सकते हैं
    • अंतर्निहित ऑब्जेक्ट्स, इंडेक्स, सांख्यिकी या अन्य निर्भरता में कुछ परिवर्तन एक recompile शुरू हो गया
  • आप केवल दूसरे उपयोगकर्ता (उपयोगकर्ता) या पिछले चालान की तुलना में एक अलग योजना प्राप्त कर सकते हैं क्योंकि:
    • क्वेरी पाठ समान नहीं हो सकता है (इसमें केस सेंसिटिविटी और व्हॉट्सएप शामिल हैं, कभी भी अलग-अलग कॉलम का ध्यान न रखें, मानदंड, फ़िल्टर, आदि शामिल हों)
    • क्वेरी को अलग-अलग उपयोगकर्ताओं द्वारा अलग-अलग सेट विकल्पों (या अलग-अलग डिफ़ॉल्ट स्कीमा) के साथ चलाया जा सकता है, यदि योजना में किसी भी वस्तु में स्कीमा सहित पूरी तरह से योग्य नाम नहीं है )
  • क्वेरी और योजना एक ही हो सकती है, लेकिन आपको अलग-अलग प्रदर्शन मिल सकते हैं क्योंकि:
    • योजना को विभिन्न मापदंडों का उपयोग करके कैश किया गया था, और यह योजना मापदंडों के वर्तमान सेट के लिए इष्टतम नहीं है (इसे आमतौर पर "पैरामीटर स्नैकिंग" कहा जाता है))
    • मापदंडों के आधार पर या इस बीच डेटा परिवर्तन के कारण केवल डेटा की मात्रा काफी भिन्न होती है
    • डेटा को एक्सेस करने के लिए डेटा को सबसे कुशल तरीके से बदलने के लिए पर्याप्त रूप से बदल गया है, लेकिन आँकड़े अपडेट या रीकंपाइल्स (आरोही प्रमुख समस्या के लिए खोज के साथ-साथ ऑटो-सांख्यिकी एल्गोरिदम) को ट्रिगर करने के लिए पर्याप्त नहीं है
    • डेटा को बफ़र पूल से निकाला गया है, और अब डिस्क से पढ़ना होगा
    • क्वेरी को संतुष्ट करने के लिए आवश्यक संसाधनों पर उच्च समरूपता, अवरोधन या अन्य उपभेद हैं

मैं इनमें से बहुत से विस्तार में यहाँ से गुजरता हूँ:

यदि ये अलग-अलग वातावरण में चल रहे हैं, तो मेरे पास यहां जांचने के लिए चीजों की एक पूरी श्रृंखला है:

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


7

हमेशा की तरह हारून बर्ट्रेंड और किन ने उत्कृष्ट जवाब दिए। हालाँकि दोनों उत्तरों में एक सामान्य सूत्र है। यदि आप या तो उत्तर का विश्लेषण करते हैं, तो आप देखेंगे कि जिस कारण से XYZ काम नहीं कर रहा है, वह काम किया है कल ऐसा नहीं है क्योंकि आप / वे व्यक्ति एक्स ने किया था। कारण बदल गया है क्योंकि डेटाबेस XYZ कारणों से चीजों को अलग तरीके से करने का फैसला किया है।

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

मैं कुछ सैन्य संदर्भों का उपयोग करने जा रहा हूं क्योंकि मैं अभी कुछ बेहतर नहीं सोच सकता। एक अधिक सामान्य रूपक की सराहना की जाएगी (कोई सज़ा नहीं)।

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

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

* मुझे पता है कि "क्यों" भविष्य की रोकथाम, सीखने आदि के लिए बहुत मूल्यवान है, लेकिन ऐसा लगता है कि ओपी को उन लोगों से प्रतिरोध का सामना करना पड़ रहा है जो समस्या के बारे में जानने या मदद करने की कोशिश नहीं कर रहे हैं।

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