Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

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

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

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

-- 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  

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

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

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

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

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

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

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

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर के लिए कनेक्शन टाइमआउट

  2. पोस्टग्रेज केस सेंसिटिविटी

  3. क्वेरी ट्यूनिंग के साथ SQL गतिरोध से बचना:ब्रेंट ओज़ार की सलाह

  4. मैं टी-एसक्यूएल में अल्पविराम के साथ किसी संख्या को कैसे प्रारूपित करूं?

  5. अदिश चर घोषित करना चाहिए