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

कैसे दो अलग-अलग धागे से बचने के लिए डीबी (हाइबरनेट और ओरेकल 10 जी) से समान पंक्तियों को पढ़ें

आपको PESSIMISTIC_WRITE . का उपयोग करने की आवश्यकता है क्वेरी के समय:

Query q = session
    .createQuery("from MyObject n where n.state = 'NEW'")
    .setLockOptions(new LockOptions(LockMode.PESSIMISTIC_WRITE));
List<MyObject> list = (List<MyObject>) q.list();

मूल वस्तुओं को लॉक करना पर्याप्त है। गतिरोध जरूरी नहीं होगा। यदि लॉक रखने वाला थ्रेड टाइम आउट वेटिंग से दूसरे थ्रेड से पहले इसे रिलीज़ नहीं करता है, तो आपको लॉक प्राप्ति विफलता मिल सकती है।

चूँकि आप Oracle का उपयोग कर रहे हैं, इस प्रकार अपडेट के लिए चुनें काम करता है:

इसलिए यदि T1 ने कुछ पंक्तियों पर एक विशेष लॉक प्राप्त किया है, तो T2 उन रिकॉर्ड्स को तब तक नहीं पढ़ पाएगा जब तक कि T1 कमिट या रोल-बैक नहीं करता। यदि T2 ने READ_UNCOMMITTED का उपयोग किया है अलगाव स्तर, तो T2 कभी भी लॉक रिकॉर्ड पर ब्लॉक नहीं करेगा, क्योंकि यह डेटा को फिर से बनाने के लिए पूर्ववत लॉग का उपयोग करता है जैसे कि यह क्वेरी शुरू होने पर था। SQL मानक के विपरीत, Oracle READ_UNCOMMITTED करेगा:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. खाली तालिका के MAX () को NULL के बजाय 0 के रूप में कैसे व्यवहार करें?

  2. मैं एक स्ट्रिंग को डिलीमीटर के रूप में उपयोग करके स्ट्रिंग को विभाजित करने के लिए रेगेक्स का उपयोग कैसे कर सकता हूं?

  3. Oracle में V प्रारूप तत्व के बारे में

  4. Oracle अद्यतन क्वेरी अनुपलब्ध SET कीवर्ड - ORA97100 और ORA-00904

  5. sql-vb.net से अधिकतम मूल्य प्राप्त करना