ओरेकल में नोलॉक क्यों नहीं है?


14

एमएस SQL ​​सर्वर nolockमें उद्देश्य के लिए इस्तेमाल किया जा सकता है।

हम Oracle और plsql में इसका उपयोग क्यों नहीं कर सकते हैं?

जवाबों:


21

SQL सर्वर सामान्य रूप से Oracle के लिए एक अलग लॉकिंग रणनीति का उपयोग करता है। SQL सर्वर द्वारा उपयोग की जाने वाली डिफ़ॉल्ट रणनीति का अर्थ है कि पंक्तियों का चयन करने के कारण उन पर रखे जाने वाले रीड लॉक (पंक्तियों, पृष्ठों या पूरी तालिका पर) का कारण बनता है। इसलिए NOLOCKकभी-कभी एक उपयोगी खंड होता है - यद्यपि सामान्य सलाह का उपयोग कभी नहीं करना है, क्योंकि यह अलगाव स्तरों के शब्दार्थ को बदलता है और प्रश्नों के आउटपुट में असंगत परिणाम पैदा कर सकता है।

* (ध्यान दें: यह डिफ़ॉल्ट है। यदि SNAPSHOTअलगाव चुना गया है, तो व्यवहार अलग है और पाठक लेखकों को ब्लॉक नहीं करते हैं।)

ओरेकल में एक पढ़ने की प्रक्रिया कभी भी एक लिखने की प्रक्रिया को अवरुद्ध नहीं करेगी। निम्नलिखित ' Oracle डेटाबेस कॉन्सेप्ट 11 जी रिलीज़ 2 ' का एक अंश है । मैं आपको यह देखने के लिए प्रोत्साहित करता हूं कि क्या आप रुचि रखते हैं कि यह ओरेकल द्वारा कैसे नियंत्रित किया जाता है।

डेटा कंजेंसी और संगति

लॉकिंग बिहेवियर का सारांश

डेटाबेस कई अलग-अलग प्रकार के ताले रखता है, जो उस ऑपरेशन पर निर्भर करता है जो लॉक का अधिग्रहण करता है। सामान्य तौर पर, डेटाबेस दो प्रकार के ताले का उपयोग करता है: अनन्य ताले और शेयर ताले। संसाधन पर केवल एक अनन्य लॉक प्राप्त किया जा सकता है जैसे कि एक पंक्ति या तालिका, लेकिन एकल संसाधन पर कई शेयर लॉक प्राप्त किए जा सकते हैं।

ताले पाठकों और लेखकों की बातचीत को प्रभावित करते हैं। एक पाठक एक संसाधन की एक क्वेरी है, जबकि एक लेखक एक संसाधन को संशोधित करने वाला एक बयान है। निम्नलिखित नियम पाठकों और लेखकों के लिए Oracle डेटाबेस के लॉकिंग व्यवहार को संक्षेप में प्रस्तुत करते हैं:

• किसी लेखक द्वारा संशोधित किए जाने पर ही एक पंक्ति लॉक की जाती है।

जब एक स्टेटमेंट एक पंक्ति को अपडेट करता है, तो लेन-देन केवल इस पंक्ति के लिए एक लॉक प्राप्त करता है। पंक्ति स्तर पर तालिका डेटा को लॉक करके, डेटाबेस उसी डेटा के लिए विवाद को कम करता है। सामान्य परिस्थितियों में 1 डेटाबेस ब्लॉक या टेबल स्तर पर एक पंक्ति लॉक को आगे नहीं बढ़ाता है।

• एक पंक्ति का एक लेखक उसी पंक्ति के एक समवर्ती लेखक को अवरुद्ध करता है।

यदि कोई लेन-देन एक पंक्ति को संशोधित कर रहा है, तो एक पंक्ति लॉक एक ही पंक्ति को अलग-अलग लेन-देन को एक साथ संशोधित करने से रोकता है।

• एक पाठक कभी एक लेखक को अवरुद्ध नहीं करता है।

क्योंकि एक पंक्ति का एक पाठक इसे लॉक नहीं करता है, एक लेखक इस पंक्ति को संशोधित कर सकता है। एकमात्र अपवाद एक SELECT है ... अद्यतन कथन के लिए, जो एक विशेष प्रकार का SELECT कथन है जो उस पंक्ति को लॉक करता है जिसे वह पढ़ रहा है।

• एक लेखक कभी एक पाठक को अवरुद्ध नहीं करता है।

जब एक लेखक द्वारा एक पंक्ति को बदला जा रहा है, तो डेटाबेस पंक्ति के सुसंगत दृश्य के साथ पाठकों को प्रदान करने के लिए पूर्ववत डेटा का उपयोग करता है।

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