खराब क्वेरी प्रदर्शन


10

हमारे पास एक बड़ी (10,000+ लाइनें) प्रक्रिया है जो आम तौर पर 0.5-6.0 सेकंड में चलती है, यह इस बात पर निर्भर करता है कि इसके साथ कितना डेटा काम करना है। पिछले महीने में या तो हमने FULLSCAN के साथ एक आँकड़े अपडेट करने के बाद 30+ सेकंड लेना शुरू कर दिया है। जब यह धीमा हो जाता है, तो एक sp_recompile समस्या को "ठीक" कर देता है, जब तक कि रात के आंकड़े की नौकरी फिर से नहीं चलती।

धीमी और तेज़ निष्पादन योजनाओं की तुलना करके, मैंने इसे एक विशिष्ट तालिका / सूचकांक तक सीमित कर दिया है। जब यह धीमी गति से चलता है तो यह अनुमान लगा रहा है ~ 300 पंक्तियों को एक विशिष्ट सूचकांक से वापस किया जाएगा, जब यह तेजी से चलता है तो यह 1 पंक्ति का अनुमान लगाता है। जब यह धीमी गति से चलता है तो यह सूचकांक पर एक खोज करने के बाद टेबल स्पूल का उपयोग करता है, जब यह तेजी से चलता है तो यह टेबल स्पूल नहीं करता है।

DBSS SHOW_STATISTICS का उपयोग करते हुए, मैंने एक्सेल में सूचकांक हिस्टोग्राम को रेखांकन किया। मैं सामान्य रूप से ग्राफ़ को "रोलिंग हिल्स" होने की उम्मीद करूंगा, लेकिन इसके बजाय, यह एक पहाड़ जैसा दिखता है, ग्राफ़ पर अन्य अन्य मूल्यों की तुलना में उच्चतम बिंदु 2x-3x अधिक है।

सूचकांक हिस्टोग्राम

अगर मैं इस पर आँकड़े अपडेट करता हूँ, तो बिना फुलस्कैन के, यह अधिक सामान्य दिखता है। अगर मैं फिर इसे फुलस्कैन के साथ चलाता हूं तो ऐसा लगता है जैसे मैंने ऊपर वर्णित किया है।

यह एक पैरामीटर सूँघने के मुद्दे की तरह लगता है, और विशेष रूप से ऊपर (प्रतीत होता है) अजीब सूचकांक वितरण से संबंधित है।

प्रॉपर्टी को टेबल वैल्यू पैरामीटर में लिया जाता है, क्या टेबुल वैल्यू पैरामीटर पर स्निफिंग पैरामीटर हो सकता है?

EDIT: खरीद में 12 अन्य पैरामीटर भी हैं, जिनमें से कुछ वैकल्पिक हैं, जिनमें से दो एक शुरुआत और अंतिम तिथि है।

हिस्टोग्राम अजीब है, या मैं गलत पेड़ को भौंक रहा हूं?

मैं निश्चित रूप से क्वेरी को समायोजित करने और / या अपनी अनुक्रमण को समायोजित करने का प्रयास करने में सहज हूं। अगर यह तय है कि महान है, उस समय मेरा सवाल तिरछा हिस्टोग्राम के बारे में अधिक है।

मुझे यह उल्लेख करना चाहिए कि यह PK IDENTITY क्लस्टर्ड इंडेक्स है। हमारे पास दो प्रणालियाँ हैं जो एक दूसरे से बात करती हैं, एक विरासत प्रणाली, एक नई घरेलू प्रणाली। दोनों सिस्टम समान डेटा को स्टोर करते हैं। नई प्रणाली में इस तालिका पर पीके को सिंक में रखने के लिए जब पुरानी प्रणाली में चीजें जोड़ी जाती हैं, तब भी वेतन वृद्धि होती है, भले ही डेटा खत्म न हो (एक रीसेट किया जाता है)। इसलिए इस कॉलम में नंबरिंग में कुछ अंतराल हो सकता है। रिकॉर्ड शायद ही कभी, हटाए गए हों।

किसी भी विचार की बहुत सराहना की जाएगी। मैं अधिक जानकारी इकट्ठा / शामिल करने के लिए खुश हूं।


क्या प्रक्रिया का एकमात्र पैरामीटर एक टीवीपी है या अन्य पैरामीस भी हैं?
मार्टिन स्मिथ

1
यदि आप धीमे और तेज़ प्लान को देखते हैं तो क्या XML ParameterCompiledValueइन अन्य पैरामेट्स के लिए अलग-अलग पता लगाने योग्य होगा ?
मार्टिन स्मिथ

1
यह जिस तिथि सीमा के साथ संकलित है वह नाटकीय रूप से संकरा है (31 के बजाय 5 दिन)। अधिकांश कॉल के लिए यह खरीद एक महीने तक चलेगी। मैं उस विशिष्ट कथन में एक recompile संकेत जोड़ने की कोशिश कर सकता था।
मार्क विल्किंसन

1
यह निश्चित रूप से एक पहचान स्तंभ के लिए एक अजीब वितरण की तरह लगता है। मैं सिर्फ इस लेख को पढ़ रहा था, और सोच रहा था कि क्या आप इन दो योजनाओं पर अनुमानित बनाम वास्तविक के लिए क्या देख रहे हैं? > blogs.technet.com/b/mspfe/archive/2013/04/18/…
रिचर्ड श्वेगर

1
बस स्पष्ट होने के लिए: वास्तव में ग्राफ क्या है? RANGE_HI_KEYसंभवतया x- अक्ष पर, लेकिन y- अक्ष पर क्या है? EQ_ROWS? RANGE_ROWS? उन का योग?
पॉल व्हाइट 9

जवाबों:


3

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

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