क्या ASYNC_NETWORK_IO के बारे में चिंता करने के लिए कुछ भी प्रतीक्षा करें?


16

संग्रहीत प्रक्रियाओं की सूची को देखने में, जिन्हें निष्पादित करने में लंबा समय लगता है, एक सबसे अधिक प्रतीक्षा का कारण बनता है। हालाँकि, उस प्रतीक्षा (81%) में से अधिकांश ASYNC_NETWORK_IO है और मुझे पता है कि क्यों: संग्रहीत कार्यविधि लगभग 400 एमबी जानकारी स्थानांतरित करती है।

प्रलेखन में, यह बताता है कि ASYNC_NETWORK_IO का कारण यह है कि ग्राहक डेटा की बाढ़ के साथ नहीं रख सकता है और यह संभवतः सच है। मुझे यकीन नहीं है कि ग्राहक को कैसे बनाए रखना है क्योंकि यह सब करता है एक संग्रहीत प्रक्रिया को ADO.NET के माध्यम से कॉल किया जाता है और फिर डेटासेट को संसाधित करता है।

इस जानकारी को देखते हुए, क्या मुझे इस प्रक्रिया के लिए ASYNC_NETWORK_IO प्रतीक्षा प्रकार के बारे में चिंता करनी चाहिए? क्या वास्तव में सर्वर के प्रदर्शन पर इसका प्रभाव पड़ता है?

जानकारी के अतिरिक्त टुकड़े:

  • मैं SQL Server 2005 के सर्विस पैक 2 पर हूं।
  • क्लाइंट ऐप SQL सर्वर के रूप में एक ही बॉक्स पर है (मुझे पता है, मुझे पता है ... लेकिन मैं इसके बारे में कुछ नहीं कर सकता)।

1
इस प्रकार के प्रतीक्षा के बारे में सोचने का सबसे अच्छा तरीका यह है कि आपकी क्वेरी में ऐसा कुछ भी नहीं है - यह क्लाइंट को डेटा लौटा रहा है। आपको यह भी दिखाई देगा कि आपके पास बहुत सी एक्सेस में लिंक टेबल हैं। आपके क्लाइंट ऐप पर निर्भर होने की एक संभावना डेटा को छोटी मात्रा में तोड़ना है या बस कम डेटा वापस करना है। यदि यह एक विकल्प नहीं है तो आप शायद इसे सीमित कर सकते हैं कि आप इसे कम करने के लिए क्या कर सकते हैं।
जेएनके

क्या क्लाइंट ऐप साझा मेमोरी या टीसीपी / आईपी का उपयोग करके कनेक्ट हो रहा है? क्या क्लाइंट ऐप और SQL सर्वर प्रोसेसर कोर के एक ही सेट को साझा कर रहे हैं, या आप उन्हें अलग करने के लिए एक आत्मीयता मास्किंग तकनीक का उपयोग कर रहे हैं?
जॉन सिगेल

यह डिफ़ॉल्ट कनेक्शन प्रकार है - कुछ खास नहीं - इसलिए यह साझा मेमोरी का उपयोग कर रहा है। कोर के एक ही सेट का उपयोग करने वाले दोनों ऐप - कोई आत्मीयता नहीं है।
एंग्रीहैकर

क्या आपका स्टोरेज SAN या लोकल है?
एरिक हिगिंस

@EricHiggins RAID हार्ड ड्राइव का एक स्थानीय सेट।
एंग्रीहैकर

जवाबों:


14

जैसा कि आपने कहा, यह प्रतीक्षा प्रकार इंगित करता है कि एप्लिकेशन SQL सर्वर के साथ नहीं है। अब वास्तव में इसका क्या मतलब है, कि SQL सर्वर नेटवर्क पर डेटा को उतनी तेजी से नहीं भेज सकता है जितना वह चाहेगा।

इसके दो अंतर्निहित कारण हो सकते हैं:

  1. एप्लिकेशन को अक्षम रूप से लिखा गया है और पंक्तियों को तेजी से संसाधित नहीं करता है।
  2. नेटवर्क अधिकतम हो गया है।

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

हालांकि बाद के मामले में आपके पास ASYNC_NETWORK_IO पर प्रतीक्षा करने वाले सभी कनेक्शन होंगे। आपको उस प्रभाव को स्पष्ट रूप से देखने में सक्षम होना चाहिए।


बुलेट बिंदु के लिए 1. डेटा पुनर्प्राप्ति ADO.NET के माध्यम से मानक कोड का उपयोग करके किया जाता है: var dataSet = new DataSet(); var da = new SqlDataAdapter(command); da.Fill(dataSet); इसलिए मुझे यकीन नहीं है कि वास्तव में क्या धीमा हो सकता है।
एंग्रीहैकर

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