Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

उच्च थ्रूपुट जेएमएस एप्लिकेशन में डेडलॉक त्रुटियों के कारण ओरेकल पंक्ति विवाद

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

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle.DataAccess विजुअल स्टूडियो 2013 में चयन के लिए उपलब्ध नहीं है

  2. DriverManager getConnection के लिए कनेक्शन टाइमआउट

  3. Oracle सरणी के साथ स्प्रिंग StoredProcedure:ORA-01000:अधिकतम खुले कर्सर पार हो गए

  4. Oracle PLSQL ब्लॉक संरचना और प्रकार

  5. जावा सुरक्षा अपवाद:डेटाबेस से कनेक्ट करने का प्रयास करते समय सीलिंग उल्लंघन