कैसे Oracle एक तालिका के खिलाफ एकाधिक समवर्ती INSERTs संभालती है


8

मैं Oracle 11g को थोड़ा और करीब से समझने की कोशिश कर रहा हूँ। मेरा प्रश्न सरल है: ओरेकल दो सत्रों को कैसे संभालता है जो एक ही समय में एक ही तालिका में रिकॉर्ड सम्मिलित करने का प्रयास कर रहे हैं।

उदाहरण के लिए, INSERT A तालिका 1 के विरुद्ध दोपहर 1 बजे चलता है। इसे पूरा होने में 5 मिनट का समय लगेगा। INSERT B को टेबल 1 के खिलाफ 1:02 PM पर अंजाम दिया जाता है। इसे पूरा होने में 1 मिनट लगेगा।

क्या होगा? क्या INSERT A समाप्त होने के बाद Oracle कतार INSERT B को क्रियान्वित किया जाएगा? क्या INSERT A के साथ INSERT B एक साथ चलेगा?

धन्यवाद!


6
कुछ भी नहीं यह खुद को देखने की कोशिश कर रहा है :-)
जैक कहते हैं कि topanswers.xyz

पूर्ण रूप से। हालाँकि, मुझे यकीन नहीं है कि एक क्वेरी कैसे बनाई जाए जिसे जानबूझकर पूरा करने में 5 मिनट लगेंगे।
डस्टिन

3
बहुत सारा डेटा डालें? insert into foo(id) select level from dual connect by level<1000000(एक बार शून्य की संख्या बढ़ाना जब तक कि यह काफी धीमा न हो जाए)
जैक कहते हैं कि topanswers.xyz

जवाबों:


4

आवेषण एक-दूसरे को प्रभावित नहीं करते हैं जब तक कि उनके पास अद्वितीय या प्राथमिक कुंजी बाधाओं के साथ संघर्ष न हो। उन्हें स्वतंत्र होना चाहिए। मेरा मानना ​​है कि यह समसामयिक मुद्दा एक कारण है कि ओरेकल का अनुक्रम एक अलग वस्तु है (कैशेड, सरोगेट पीके पीढ़ी सम्मिलित से अलग है)।

उस संबंध में, वे अनएम्फाइंड टेबल पर काम करते हैं क्योंकि यह उनके सत्र को देखा जाता है। इस व्यवहार का वर्णन नीचे दिए गए स्टैकओवरफ़्लो पोस्ट में किया गया है।

/programming/3194999/dml-by-multiple-users-commit-scenarios-in-oracle


2

शायद यह एप्लिकेशन डेवलपर्स के लिए ओरेकल ट्रांज़ैक्शन मैनेजमेंट (कॉन्सेप्ट) या एसक्यूएल प्रोसेसिंग पर एक नज़र रखना उपयोगी है (उन्नत एप्लिकेशन डेवलपर की गाइड)

आप sqlplus के साथ एक सत्र खोलकर ओरेकल के व्यवहार की जांच कर सकते हैं, निष्पादित करके ऑटोकॉमिट को व्यवस्थित कर सकते हैं

स्वतः पूर्ण सेट करें

और एक सम्मिलित निष्पादित

तालिका (...) मान (...) में डालें;

इस सत्र को खुला छोड़ दें और किसी अन्य विंडो से एक स्क्लेप्लस सत्र शुरू करें, ऑटोकॉमिट को बंद करें और एक और इंसर्ट जारी करें। दोनों लेनदेन तब तक सक्रिय रहेंगे जब तक आप उन्हें कमिट (या रोलबैक) के साथ बंद नहीं करते।

ज्यादातर स्थितियों में ऑटोक्लोमिट को सेट करना वास्तव में आवश्यक नहीं है क्योंकि यदि आपने इसे बदल दिया है तो यह sqlplkus के लिए डिफ़ॉल्ट है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.