SQL सर्वर: ताला संचार बफर संसाधनों पर गतिरोध


30

इस गतिरोध प्रकार के संभावित कारण क्या हो सकते हैं? (सामान्य रूप से गतिरोध नहीं)

ताला संचार बफर संसाधनों

क्या यह संकेतित प्रणाली स्मृति में कम है और बफ़र्स गिनती सीमा से बाहर है?

विस्तृत त्रुटि:

लेनदेन (प्रोसेस आईडी 59) को एक अन्य प्रक्रिया के साथ लॉक संचार बफर संसाधनों पर गतिरोध किया गया था और गतिरोध पीड़ित के रूप में चुना गया है। लेन-देन फिर से करें

जवाबों:


24

पूरा संदेश जो आमतौर पर देखा जाता है:

लेन-देन (प्रक्रिया आईडी 53) लॉक पर गतिरोध था | एक अन्य प्रक्रिया के साथ संचार बफर संसाधनों और गतिरोध पीड़ित के रूप में चुना गया है। लेन-देन फिर से करें।

यह लॉक प्रकार आमतौर पर गतिरोध प्रश्नों के साथ देखा जाता है जिसे SQL सर्वर ने समानांतर के रूप में निष्पादित किया है, कभी-कभी "इंट्रा-क्वेरी समानांतर डेडलॉक" के रूप में संदर्भित किया जाता है। मैंने कुछ कथन देखे हैं कि यह भी इंगित करता है कि सिस्टम संसाधन कम हैं, जो मुझे लगता है कि एक छोटी सी डिग्री में शामिल हो सकता है।

एक सामान्य दिशानिर्देश जो मैंने यह निर्धारित करने के लिए देखा है कि क्या यह समानांतर गतिरोध है जब आप एक्सएमएल गतिरोध ग्राफ खींचते हैं (जो कि 2008 और उससे अधिक समय में system_health सत्र के साथ किया जा सकता है) आपको विभिन्न प्रक्रिया आईडी दिखाई देगी जो समान कोड दिखाती है। निष्पादन ढेर।

साथ ही, गतिरोध ग्राफ की संसाधन सूची को देखने और वेटर घटना के प्रकार को ध्यान में रखते हुए। वे आमतौर पर "e_xxxxxx", या ऐसा कुछ दिखा सकते हैं:

<waiter-list>
 <waiter event="e_waitPipeGetRow" type="consumer" id="process821d828" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process8209198" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process3827c18" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process3809eb8" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process8226b08" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process9acb6d8" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process6188d7828" />
 <waiter event="e_waitPipeGetRow" type="consumer" id="process381cef8" />
</waiter-list>

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

इन गतिरोधों को हल करने के लिए आपको सबसे सामान्य क्वेरी संकेत बताए गए हैं जो लागू हो रहे हैं MAXDOP 1। हालाँकि, ऐसा करने से पहले आप यह देख सकते हैं कि सर्वर स्तर MAXDOP और कॉस्ट थ्रेशोल्ड क्या हैं। कॉस्ट थ्रेशोल्ड आम तौर पर डिफ़ॉल्ट रूप से 5 पर सेट होता है और मुझे इसे शुरू करने के लिए 35 या 40 तक बढ़ाना पसंद है, यदि प्रश्न में क्वेरी को कोड के उस हिस्से के लिए कम लागत है, तो इसे समानांतर में चलाने की आवश्यकता नहीं हो सकती है। मैं MAXDOP क्वेरी संकेत का उपयोग करने का शौकीन नहीं हूं, लेकिन इसका मतलब यह नहीं है कि उनके पास अपना स्थान और उद्देश्य नहीं है। एकदम मेरे विचार।

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