2011-10-31 15 views
8

का उपयोग करते हुए सर्वलेट से बुलाए गए अपडेट स्टेटमेंट्स के कारण कोड 68 68 कारण मैं एक सर्वलेट से डीबी 2 तक एक के बाद अपडेट स्टेटमेंट्स को कॉल कर रहा हूं। मुझे त्रुटि sqlstate 40001 मिल रहा है, कारण कोड 68 जो मैंने पाया है कि यह डेडलॉक टाइमआउट के कारण है।डीबी 2 डेडलॉक टाइमआउट स्क्लस्टेट: 40001, एसक्यूएल

  • मैं इस समस्या को कैसे हल कर सकता हूं?
  • क्या क्वेरी टाइमआउट सेट करके इसे हल किया जा सकता है?
  • यदि हां तो सर्वलेट में अद्यतन कथन के साथ इसका उपयोग कैसे करें या इसका उपयोग कहां करें?

उत्तर

11

कारण कोड 68 पहले से ही आपको लॉक टाइमआउट के कारण बताता है (डेडलॉक कारण कोड 2 है) यह अन्य उपयोगकर्ताओं के साथ एक ही समय में चल रहे प्रश्नों के कारण हो सकता है जो आपके द्वारा उपयोग किए जा रहे उसी डेटा का उपयोग करते हैं, या आपके अपने कई अपडेट।

लॉक कहां से देखने के लिए db2 कमांड लाइन से db2pd -db locktest -locks show detail चलाकर शुरू करें। आप db2pd आदेश उत्पादन से प्राप्त कर आईडी नंबर के साथ # प्रतीकों में

select tabschema, tabname, tableid, tbspaceid 
from syscat.tables where tbspaceid = # and tableid = # 

भरने: तुम तो की तरह कुछ चलाने की आवश्यकता होगी।

एक बार जब आप देखते हैं जहां ताले कर रहे हैं, यहाँ कुछ सुझाव हैं:

◦Deadlock आवृत्ति कभी कभी कि सभी आवेदनों को उसी क्रम में उनके आम डेटा का उपयोग सुनिश्चित करने के द्वारा कम किया जा सकता - जिसका अर्थ है, उदाहरण के लिए, यह है कि वे का उपयोग (और इसलिए ताला) तालिका ए में पंक्तियां, तालिका बी के बाद, तालिका सी के बाद, और इसी तरह। http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.trb.doc/doc/t0055074.html

पढ़ने की सिफारिश की: http://www.ibm.com/developerworks/data/library/techarticle/dm-0511bond/index.html

परिशिष्ट:

से लिया है, तो अपने सर्वलेट या किसी अन्य दोषी आवेदन select गतिरोध में शामिल होना पाया बयान उपयोग कर रहा है, तो आप का चयन करने के लिए बयान with ur जोड़कर कोशिश कर सकते हैं यदि नए अद्यतन (या सम्मिलित) डेटा की सटीकता महत्वपूर्ण नहीं है।

+0

यह ध्यान रखना महत्वपूर्ण है कि आलेख ** ** ** ** मृतकों की आवृत्ति ** को कम करने के बारे में बात करता है, ** ** उन्हें पूरी तरह से रोक नहीं रहा है। Http://stackoverflow.com/a/112256/14731 के अनुसार लगातार लॉकिंग ऑर्डर डेडलॉक्स को रोकता नहीं है। हम जितना अधिक कर सकते हैं उनकी आवृत्ति को कम करने का प्रयास है। – Gili

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