2012-12-12 48 views
5

मैं कुछ डेडलॉक्स समस्याओं को ट्रैक करने के लिए एक SQL सर्वर ट्रेस चलाता हूं और डेडलॉक के कारण के रूप में मुझे इस टिप्पणी Parallel query worker thread was involved in a deadlock के साथ सिर पर मारा गया था।समांतर क्वेरी वर्कर थ्रेड डेडलॉक में शामिल था

enter image description here

Q1: इसका मतलब यह है कि एक ही क्वेरी यह आत्म deadlocking है? क्वेरी निष्पादन योजना कुछ समांतरता मामलों को दिखाती है।

प्रश्न 2: एसक्यूएल सर्वर को "बल" करने के संभावित तरीके क्या हैं समानांतरता का उपयोग न करें या कम से कम इसे जितना संभव हो सके इसका उपयोग करने से बचें?

+0

लाइन पर पुस्तकें MAXDOP लाइन – SQLMenace

उत्तर

7

Q1: नहीं इसका मतलब यह है कि डेडलॉक में एक्सचेंज ऑपरेटर शामिल है। क्लाइंट साइड पर आपको त्रुटि मिलेगी "लेनदेन (प्रक्रिया आईडी एन) किसी अन्य प्रक्रिया के साथ {थ्रेड | संचार बफर} संसाधनों पर डेडलॉक किया गया था और इसे डेडलॉक पीड़ित के रूप में चुना गया है।"

इस तरह के डेडलॉक में हमेशा दो या दो से अधिक प्रक्रियाएं शामिल होंगी और इसमें हमेशा लॉक संसाधन शामिल होगा। इस परिदृश्य के लिए

Here is a repro। ज्यादातर मामलों में, सही सूचकांक होने से इस समस्या का समाधान होगा।

के साथ ही एक प्रक्रिया गतिरोध (नवीनतम बनाता है के साथ कम ही है) यह इंट्रा क्वेरी समानता गतिरोध कहा जाता है और आप "संदेश 8650, स्तर 13, राज्य 1 की तरह एक त्रुटि प्राप्त होगी, पंक्ति 1 इंट्रा क्वेरी समानांतरवाद अपने सर्वर की वजह से जब कमांड (प्रक्रिया आईडी एन) को डेडलॉक करने के लिए। क्वेरी संकेत विकल्प (maxdop 1) का उपयोग कर इंट्रा-क्वेरी समांतरता के बिना क्वेरी को फिर से करें। " विवरण के लिए this link देखें।

प्रश्न 2: दिए गए लिंक डेनिस का संदर्भ लें।

+1

मृत रेपो लिंक। क्या आप लिंक में क्या विस्तार कर सकते हैं? –