यह अलगाव स्तर गंदे पढ़ने की अनुमति देता है। एक लेन-देन में किसी अन्य लेन-देन द्वारा किए गए अप्रतिबद्ध परिवर्तन दिखाई दे सकते हैं।
अलगाव के उच्चतम स्तर को बनाए रखने के लिए, एक डीबीएमएस आमतौर पर डेटा पर ताले प्राप्त करता है, जिसके परिणामस्वरूप समेकन का नुकसान हो सकता है और उच्च लॉकिंग ओवरहेड हो सकता है। यह अलगाव स्तर इस संपत्ति को आराम देता है।
आप READ UNCOMMITTED
. पर विकिपीडिया लेख देखना चाह सकते हैं कुछ उदाहरणों और आगे पढ़ने के लिए।
आपको जेफ़ एटवुड के ब्लॉग आलेख को देखने में भी रुचि हो सकती है कि कैसे उन्होंने और उनकी टीम ने स्टैक ओवरफ़्लो के शुरुआती दिनों में डेडलॉक समस्या का सामना किया। जेफ के अनुसार:
<ब्लॉकक्वॉट>
लेकिन क्या nolock
है खतरनाक? क्या आप अमान्य डेटा को read uncommitted
. के साथ पढ़ सकते हैं पर? हाँ, सिद्धांत रूप में। आपको डेटाबेस आर्किटेक्चर अंतरिक्ष यात्रियों की कोई कमी नहीं मिलेगी जो आप पर एसीआईडी विज्ञान छोड़ना शुरू कर देते हैं और जब आप उन्हें बताते हैं कि आप nolock
आज़माना चाहते हैं तो बिल्डिंग फायर अलार्म को खींच लें। यह सच है:सिद्धांत डरावना है। लेकिन मुझे लगता है कि यह है:"सिद्धांत रूप में सिद्धांत और व्यवहार में कोई अंतर नहीं है। व्यवहार में है।"
मैं कभी भी nolock
. का उपयोग करने की अनुशंसा नहीं करूंगा किसी भी डेटाबेस डेडलॉकिंग समस्याओं के लिए एक सामान्य "अच्छा है जो आपको बीमार करता है" के रूप में सांप का तेल ठीक करता है। आपको पहले समस्या के स्रोत का निदान करने का प्रयास करना चाहिए।
लेकिन व्यवहार में nolock
adding जोड़ना जिन प्रश्नों के बारे में आप पूरी तरह से जानते हैं, वे सरल हैं, सीधे-सीधे केवल-पढ़ने के मामले कभी भी समस्या का कारण नहीं बनते... जब तक आप जानते हैं कि आप क्या कर रहे हैं।
READ UNCOMMITTED
का एक विकल्प जिस स्तर पर आप विचार करना चाहेंगे वह है READ COMMITTED SNAPSHOT
. जेफ को फिर से उद्धृत करना:
स्नैपशॉट एक पूरी तरह से नई डेटा परिवर्तन ट्रैकिंग पद्धति पर भरोसा करते हैं ... केवल एक मामूली तार्किक परिवर्तन से अधिक, इसके लिए सर्वर को डेटा को भौतिक रूप से अलग तरीके से संभालने की आवश्यकता होती है। एक बार जब यह नई डेटा परिवर्तन ट्रैकिंग विधि सक्षम हो जाती है, तो यह प्रत्येक डेटा परिवर्तन की एक प्रति, या स्नैपशॉट बनाता है। विवाद के समय लाइव डेटा के बजाय इन स्नैपशॉट को पढ़ने से, पढ़ने पर साझा लॉक की आवश्यकता नहीं रह जाती है, और समग्र डेटाबेस प्रदर्शन बढ़ सकता है।