2011-09-01 19 views
5

पढ़ना क्या कोई मुझे इस डेडलॉक ग्राफ को पढ़ने/समझने में मदद कर सकता है?एसक्यूएल डेडलॉक ग्राफ

मुझे समझ में नहीं आता कि प्रक्रिया 75 किसी ऑब्जेक्ट पर लॉक का अनुरोध क्यों कर रही है कि उसके पास पहले से लॉक है?

Deadlock graph

+0

क्या आप "innoDB स्थिति दिखाएं" प्रतिक्रिया भेज सकते हैं, यह अधिक जानकारीपूर्ण होगा। इसमें अंतिम डेडलॉक – varela

+0

@varela होना चाहिए - यह SQL सर्वर है। जैक्स क्या संस्करण? एक पक्षाघात मुद्दा की तरह लग रहा है। –

+0

@ मार्टिन स्मिथ। एसक्यूएल सर्वर 2008 – Jacques

उत्तर

7

एक ब्लॉग लेख है कि मैं एक "एक्सचेंज घटना" के अस्तित्व को मिल गया है के अनुसार इंगित करता है कि आपकी समस्या के स्रोत अपने प्रश्न में समानांतरवाद हो सकता है।

Today's Annoyingly-Unwieldy Term: "Intra-Query Parallel Thread Deadlocks"

उपरोक्त लेख और अधिक विस्तार में चला जाता है, तथापि पंचलाइन है:

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

वर्कअराउंड # 2: क्वेरी के अंत में "विकल्प (MAXDOP 1)" क्वेरी संकेत के साथ एकल-थ्रेडेड निष्पादन को बल दें। यदि आप क्वेरी को संशोधित नहीं कर सकते हैं, तो आप योजना मार्गदर्शिका के साथ किसी भी प्रश्न के संकेत को लागू कर सकते हैं।

आप यह देखने के लिए प्रयास कर सकते हैं कि कोई सुधार है या नहीं।

+0

को उजागर करने में सहज महसूस नहीं होता है, धन्यवाद, मैं धीमी गति से चलने वाली क्वेरी को पहचानने और सुधारने में कामयाब रहा और तब से कोई ताले नहीं। सुनिश्चित नहीं है कि भविष्य में इसे कैसे रोकें? और एसक्यूएल सर्वर स्मार्ट होने का प्रयास क्यों करता है यदि कोई संभावना है कि यह खुद को डेडलॉक स्थिति में ला सकता है? (ईजीजी समानांतरता का उपयोग क्यों करें?) – Jacques

+0

संदर्भित लिंक "शुद्ध" एक्सचेंज इवेंट इंट्रा-क्वेरी डेडलॉक पर केंद्रित है जहां केवल एक एसपीआईडी ​​(इस प्रकार "इंट्रा-क्वेरी") है। प्रश्नों के डेडलॉक ग्राफ में एक एक्सचेंज इवेंट _plus_ एक और पारंपरिक डेडलॉक शामिल है जिसमें 2 प्रश्न (एक और एसपीआईडी) शामिल है। मैंने पढ़ा है कि अलग-अलग डेडलॉकिंग एक्सचेंज इवेंट स्वयं को ठीक कर सकते हैं (क्योंकि वे आंतरिक बग के कारण हो सकते हैं) इसलिए फोकस अन्य साझा ऑब्जेक्ट्स - पेज लॉक इस मामले में होना चाहिए। – crokusek

संबंधित मुद्दे