वेब ऐप से क्वेरी समय निकालता है लेकिन प्रबंधन स्टूडियो से ठीक चलता है

यह एक प्रश्न है जिसे मैंने एक और मंच पर पूछा जिसे कुछ सभ्य उत्तर प्राप्त हुए, लेकिन मैं देखना चाहता था कि यहां किसी के पास अधिक अंतर्दृष्टि है या नहीं।

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

मेरा विशेष मामला एएसपी.नेट 2.0 और एसक्यूएल सर्वर 2005 का उपयोग कर रहा था, लेकिन मुझे लगता है कि समस्या किसी भी आरडीबीएमएस सिस्टम पर लागू हो सकती है।

0
ro fr bn
मुझे एक ही समस्या थी और stackoverflow.com/questions/250713/… मेरी समस्या हल हो गई
जोड़ा लेखक David, स्रोत

7 उत्तर

क्या आपने अभी तक एएसपी.नेट ट्रेसिंग चालू कर दी है? मेरे पास एक उदाहरण है जहां यह एसक्यूएल संग्रहीत प्रक्रिया नहीं थी, जो समस्या थी, यह तथ्य था कि प्रक्रिया 5000 पंक्तियों को वापस कर दी गई थी और ऐप समस्या उत्पन्न करने वाले 5000 आइटमों के साथ डाटाबेस सूची बनाने का प्रयास कर रहा था।

चीजों को ट्रैक करने में मदद के लिए आप वेब ऐप फ़ंक्शंस के साथ-साथ ट्रेस के माध्यम से निष्पादन के समय देख सकते हैं।

0
जोड़ा

SelectCommand टाइमआउट मान को बदलने का प्रयास करें:

DataAdapter.SelectCommand.CommandTimeout = 120;
0
जोड़ा
यह एक समाधान नहीं है! यह कामकाज है!
जोड़ा लेखक Icet, स्रोत

मैंने अपने शोध से अब तक सीखा है।

.NET कनेक्शन सेटिंग्स में भेजता है जो प्रबंधन स्टूडियो में लॉग इन करते समय आपको उतना ही नहीं मिलता है। यदि आप एसक्यूएल प्रोफाइलर के साथ कनेक्शन को स्नीफ करते हैं तो यहां देखें कि आप क्या देखते हैं:

-- network protocol: TCP/IP  
set quoted_identifier off  
set arithabort off  
set numeric_roundabort off  
set ansi_warnings on  
set ansi_padding on  
set ansi_nulls off  
set concat_null_yields_null on  
set cursor_close_on_commit off  
set implicit_transactions off  
set language us_english  
set dateformat mdy  
set datefirst 7  
set transaction isolation level read committed  

अब मैं एसक्यूएल सर्वर में लॉग इन करते समय चलाए गए प्रत्येक क्वेरी के ऊपर उन सेटिंग को चिपका रहा हूं, यह सुनिश्चित करने के लिए कि सेटिंग्स समान हैं।

इस मामले के लिए, मैंने अलग-अलग सेटिंग को अलग-अलग करने की कोशिश की, डिस्कनेक्ट करने और पुनः कनेक्ट करने के बाद, और पाया कि एरिथबोर्ट को बंद करने से 90 सेकंड से 1 सेकंड तक समस्या क्वेरी कम हो गई है।

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

लेकिन मैं इस से पूरी तरह से आश्वस्त नहीं हूँ। मैंने इस सेटिंग को बदलने के बाद वास्तविक क्वेरी योजनाओं की तुलना करने की कोशिश की है और मैंने अभी तक किसी भी बदलाव को दिखाने के लिए नहीं देखा है।

क्या arithabort सेटिंग के बारे में कुछ और है जो कुछ मामलों में धीरे-धीरे चलाने के लिए क्वेरी का कारण बन सकता है?

समाधान सरल लग रहा था: बस संग्रहित प्रक्रिया के शीर्ष पर arithabort सेट करें। लेकिन इससे विपरीत समस्या हो सकती है: क्वेरी पैरामीटर को बदलें और अचानक यह 'ऑन' से 'ऑफ' के साथ तेजी से चलता है।

इस समय यह सुनिश्चित करने के लिए कि योजना हर बार पुनर्जीवित हो जाती है, मैं 'recompile के साथ' प्रक्रिया चला रहा हूं। यह विशेष रिपोर्ट के लिए ठीक है, क्योंकि इसे फिर से संकलित करने में एक सेकंड लग सकता है, और यह एक रिपोर्ट पर बहुत ध्यान देने योग्य नहीं है जो वापस लौटने के लिए 1-10 सेकंड लेता है (यह एक राक्षस है)।

लेकिन यह उन अन्य प्रश्नों के लिए एक विकल्प नहीं है जो बहुत अधिक बार चलते हैं और जितनी जल्दी संभव हो सके, कुछ मिलीसेकंड में लौटने की आवश्यकता होती है।

0
जोड़ा
+1 एसक्यूएल प्रोफाइलर से उन सेटिंग्स को पकड़ना और उन्हें प्रबंधन स्टूडियो में पेस्ट करना एक महान युक्ति है और मुझे लोड करने में मदद मिली।
जोड़ा लेखक Alex Humphrey, स्रोत
+1 सेट एरिथबॉर्टर ऑफ़लाइन मेरी पिछली-टाइम-आउट क्वेरी को खूबसूरती से काम करना शुरू करने के लिए पर्याप्त था।
जोड़ा लेखक Spud, स्रोत
@ eric-z-beard आप इन मानों को कहां रखते हैं? एसपी के अंदर या EXEC sp_whatever से पहले .NET से
जोड़ा लेखक djandreski, स्रोत

पहले इसे एक स्टेजिंग बॉक्स पर जांचें, एसक्यूएल सर्वर के लिए सर्वर स्तर पर इसे बदलें

@option int घोषित करें

     

set @option = @@ विकल्प | 64

     

exec sp_configure 'उपयोगकर्ता विकल्प' निष्पादित करें,   @option

     

RECONFIGURE

0
जोड़ा

आप यह देखने के लिए sp_who2 कमांड का उपयोग करने का प्रयास कर सकते हैं कि प्रश्न में कौन सी प्रक्रिया चल रही है। यह आपको दिखाएगा कि यह किसी अन्य प्रक्रिया द्वारा अवरुद्ध है, या अत्यधिक मात्रा में cpu और/या io समय का उपयोग कर रहा है।

0
जोड़ा

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

आप स्पोक को प्रोफाइल करके इसकी पुष्टि भी कर सकते हैं। जब आप इसे एसक्यूएल मैनेजमेंट स्टूडियो से निष्पादित करते हैं, तो जब आप एएसपी.NET एप्लिकेशन से इसे प्रोफाइल करते हैं तो आईओ की तुलना कैसे की जाती है। यदि वे बहुत अधिक हैं, तो यह सिर्फ फिर से लागू करता है कि यह एक खराब निष्पादन योजना खींच रहा है।

0
जोड़ा

हमारे पास एक ही समस्या थी और यहां हमने जो पाया वह है।

हमारे डेटाबेस लॉग आकार को डिफ़ॉल्ट (814 एमबी) पर रखा जा रहा था और ऑटो विकास 10% था। सर्वर पर, अधिकतम सर्वर मेमोरी को डिफ़ॉल्ट सेटिंग में भी रखा गया था (2147483647 एमबी)।

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

0
जोड़ा