READ UNCOMMITTED आइसोलेशन स्तर का उपयोग क्यों करें?


225

सादे अंग्रेजी में, उपयोग करने के नुकसान और फायदे क्या हैं

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

.NET अनुप्रयोगों और रिपोर्टिंग सेवा अनुप्रयोगों के लिए एक क्वेरी में?

जवाबों:


210

यह अलगाव स्तर गंदे रीड्स की अनुमति देता है। एक लेन-देन में कुछ अन्य लेन-देन द्वारा किए गए परिवर्तन नहीं हो सकते हैं।

अलगाव के उच्चतम स्तर को बनाए रखने के लिए, एक डीबीएमएस आमतौर पर डेटा पर ताले प्राप्त करता है, जिसके परिणामस्वरूप संक्षिप्तता का नुकसान हो सकता है और एक उच्च लॉकिंग ओवरहेड हो सकता है। यह अलगाव स्तर इस संपत्ति को आराम देता है।

आप कुछ उदाहरणों और आगे पढ़ने के लिए विकिपीडिया लेखREAD UNCOMMITTED को देखना चाहेंगे ।


आपको जेफ एटवुड के ब्लॉग लेख की जांच करने में भी रुचि हो सकती है कि कैसे और उनकी टीम ने स्टैक ओवरफ्लो के शुरुआती दिनों में एक गतिरोध मुद्दे से निपट लिया। जेफ के अनुसार:

लेकिन nolockखतरनाक है? क्या आप इसके साथ अमान्य डेटा पढ़ना समाप्त कर सकते हैं read uncommitted? हाँ, सिद्धांत रूप में। आपको डेटाबेस आर्किटेक्चर के अंतरिक्ष यात्रियों की कोई कमी नहीं मिलेगी जो आप और सभी पर ACID विज्ञान छोड़ना शुरू करते हैं, लेकिन बिल्डिंग फायर अलार्म को खींचते हैं जब आप उन्हें बताते हैं कि आप कोशिश करना चाहते हैं nolock। यह सच है: सिद्धांत डरावना है। लेकिन यहाँ मैं क्या सोचता हूँ: "सिद्धांत रूप में सिद्धांत और व्यवहार में कोई अंतर नहीं है। व्यवहार में है।"

मैं nolock एक सामान्य "क्या आप के लिए अच्छा है" के रूप में उपयोग करने की अनुशंसा नहीं करेंगे आप साँप के तेल को किसी भी डेटाबेस डेडलॉकिंग समस्याओं के लिए ठीक कर सकते हैं। आपको समस्या के स्रोत का निदान करने का प्रयास करना चाहिए।

लेकिन nolockउन प्रश्नों को जोड़ने के अभ्यास में, जिन्हें आप पूरी तरह से जानते हैं, सरल हैं, सीधे-सीधे पढ़े जाने वाले केवल मामले ही समस्याएँ पैदा नहीं करते हैं ... जब तक आप जानते हैं कि आप क्या कर रहे हैं।

READ UNCOMMITTEDआप जिस स्तर पर विचार करना चाहते हैं, उसका एक विकल्प है READ COMMITTED SNAPSHOT। जेफ को फिर से उद्धृत करते हुए:

स्नैपशॉट्स पूरी तरह से नए डेटा परिवर्तन ट्रैकिंग विधि पर निर्भर करते हैं ... सिर्फ एक मामूली तार्किक परिवर्तन से अधिक, यह सर्वर को शारीरिक रूप से अलग तरीके से डेटा को संभालने की आवश्यकता है। एक बार जब यह नया डेटा परिवर्तन ट्रैकिंग विधि सक्षम हो जाता है, तो यह हर डेटा परिवर्तन की प्रतिलिपि या स्नैपशॉट बनाता है। विवाद के समय लाइव डेटा के बजाय इन स्नैपशॉट्स को पढ़ने से, साझा किए गए ताले को रीड्स की आवश्यकता नहीं होती है, और समग्र डेटाबेस प्रदर्शन बढ़ सकता है।


13
लेखक को यह आभास होता है कि जो डेटा अंतिम रूप से कमिट किया गया था, उसे बिना पढ़े / बिना लॉक किए वापस कर दिया जाएगा। मेरी समझ यह है कि जो कुछ भी अंतिम मूल्य है वह भी बिना किसी लेन-देन के वापस कर दिया गया है। यदि ऐसा है, तो परिणाम डेटा "कुछ सेकंड से पुराना" नहीं होगा। यह (या कम से कम हो सकता है कि लेनदेन जो आपके द्वारा पढ़ा गया डेटा वापस लुढ़क जाता है) उस डेटा को पुनः प्राप्त करता है जो मौजूद नहीं है या कभी प्रतिबद्ध नहीं था। क्या मैं गलत हूं?
xr280xr

4
बहुत बढ़िया जवाब। BTW, ओरेकल में डिफ़ॉल्ट रूप से "स्नैपशॉट" है क्योंकि मुझे पता है, शायद दशकों पहले Sql सर्वर ने इसे पेश किया था। SQL सर्वर से शुरू करते समय मैं काफी निराश था और मुझे पता चला कि "आदिम" लॉकिंग तंत्र का उपयोग करके सभी संगामिति समस्याओं को हल किया गया था। ओरेकल में "बिना पढ़े" कभी नहीं देखा। और अभ्यासी उतने ही खुश हैं जितने अंतरिक्ष यात्री।
स्टीफन स्टाइनगर

13
READ UNCOMMITTEDआप दो बार पंक्तियों को पढ़ने या संपूर्ण पंक्तियों को याद करने का कारण बन सकते हैं । यदि आप पढ़ते समय पेज-स्प्लिट होते हैं, तो आप डेटा के पूरे हिस्से को याद कर सकते हैं। WITH(NOLOCK)यदि परिणाम की सटीकता महत्वपूर्ण नहीं है, तो केवल इसका उपयोग किया जाना चाहिए
इयान बॉयड

8
@DanielNolan, उस लेख की सिफारिश करना खतरनाक है क्योंकि जेफ को पता नहीं था कि वह क्या कर रहा है । रीड-अनकमैट केवल पढ़ने के लिए समझ में आता है डेटा को कभी भी संशोधित नहीं किया जाएगा। उन तालिकाओं को पढ़ने के लिए उपयोग करने की कोशिश करना जिन्हें लिखा जाना चाहिए, इसका मतलब है कि आप अभ्यास में कुछ ऐसा पढ़ेंगे जो वापस लुढ़क जाए। ऐसा नहीं है कि आप डेटा पढ़ रहे हैं जो कुछ सेकंड पुराना है, लेकिन आप .................................. ................... ........................... ....
पचेरियर

5
……………………………… डेटा पढ़ रहे हैं जो कभी भी प्रतिबद्ध नहीं होता है। यही भ्रष्टाचारी की बहुत परिभाषा है। और अगर आप उन अनधिकृत रीड के परिणामों के आधार पर लिखने जा रहे हैं , तो आप व्यवहार में दूषित डेटा लिखेंगे। लेख में यह भी कहा गया है कि "MySQL, जो वेब ऐप्स पर विकसित हुआ है, SQL सर्वर की तुलना में बॉक्स से बहुत कम निराशावादी है"। सच नहीं है, Sql सर्वर डिफ़ॉल्ट रूप से रीड-कमिटेड स्तर पर काम करता है, जबकि MySQL डिफ़ॉल्ट रूप से रिपीटेबल-रीड्स पर काम करता है, रीड-अनकमिज़्म से पांच लेवल दूर।
पचेरियर

36

यह लंबे आवेषण प्रश्नों की प्रगति को देखने के लिए उपयोगी हो सकता है, कोई भी अनुमान लगा सकते हैं (जैसे COUNT(*)या मोटा SUM(*)) आदि।

दूसरे शब्दों में, गंदे पढ़े गए प्रश्नों के परिणाम तब तक ठीक होते हैं जब तक आप उन्हें अनुमान के रूप में मानते हैं और उनके आधार पर कोई महत्वपूर्ण निर्णय नहीं लेते हैं।


36

के लिए मेरा पसंदीदा उपयोग मामला read uncommitedएक लेनदेन के अंदर होने वाली किसी चीज़ को डीबग करना है।

अपना सॉफ़्टवेयर किसी डिबगर के अंतर्गत प्रारंभ करें, जब आप कोड की पंक्तियों के माध्यम से आगे बढ़ रहे हैं, तो यह एक लेनदेन खोलता है और आपके डेटाबेस को संशोधित करता है। जब कोड बंद कर दिया जाता है, तो आप एक क्वेरी एनालाइज़र खोल सकते हैं, रीड अनक्मिटेड आइसोलेशन लेवल पर सेट कर सकते हैं और देख सकते हैं कि क्या चल रहा है।

आप यह देखने के लिए भी उपयोग कर सकते हैं कि लंबे समय से चल रही प्रक्रियाएँ अटकी हुई हैं या अपने डेटाबेस को सही ढंग से अपडेट कर रही हैं।

यह बहुत अच्छा है यदि आपकी कंपनी अत्यधिक जटिल संग्रहीत प्रक्रियाओं को बनाना पसंद करती है।


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

22

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

यदि आप सटीकता की परवाह करते हैं, तो इसका उपयोग न करें।

अधिक जानकारी MSDN पर है :

गंदे पढ़ने, या अलगाव स्तर 0 लॉकिंग, जिसका अर्थ है कि कोई साझा ताले जारी नहीं किए गए हैं और कोई विशेष ताले सम्मानित नहीं किए गए हैं। जब यह विकल्प सेट हो जाता है, तो बिना पढ़े या गंदे डेटा पढ़ना संभव है; डेटा के मूल्यों को बदला जा सकता है और लेनदेन के अंत से पहले डेटा सेट में पंक्तियाँ दिखाई या गायब हो सकती हैं। लेन-देन में सभी SELECT स्टेटमेंट्स में सभी तालिकाओं पर NOLOCK सेट करने के रूप में इस विकल्प का एक ही प्रभाव है। यह चार अलगाव स्तरों में से सबसे कम प्रतिबंधात्मक है।


यह क्वेरी की गति को कैसे प्रभावित करेगा?
किप रियल

11
@ किप - selectबयानों को उन संसाधनों पर साझा ताले प्राप्त करने के लिए इंतजार नहीं करना होगा जो विशेष रूप से अन्य लेनदेन द्वारा बंद हैं।
जारोड डिक्सन

15

कब उपयोग करना ठीक है READ UNCOMMITTED?

अंगूठे का नियम

अच्छा : बड़े कुल रिपोर्ट लगातार बदलते योग दिखा रहे हैं।

जोखिम भरा : लगभग सब कुछ।

अच्छी खबर यह है कि केवल पढ़ी जाने वाली अधिकांश रिपोर्टें उस अच्छी श्रेणी में आती हैं ।

ज्यादा जानकारी...

इसका उपयोग करने के लिए ठीक है:

  • वर्तमान, गैर-स्थैतिक डेटा जैसे लगभग सभी उपयोगकर्ता-सामना करने वाली कुल रिपोर्ट जैसे वर्ष से लेकर बिक्री तक। यह त्रुटि के एक मार्जिन (शायद <0.1%) को जोखिम में डाल देता है, जो अन्य अनिश्चितता कारकों जैसे इनपुट त्रुटि या बस यादृच्छिकता जब वास्तव में डेटा मिनट से मिनट में दर्ज किया जाता है की तुलना में बहुत कम है।

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

जब जोखिम भरा हो

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

  • ऐतिहासिक आंकड़ा। यह शायद ही कभी व्यावहारिक अंतर बनाता है, लेकिन जब उपयोगकर्ता समझते हैं कि लगातार बदलते हुए डेटा सही नहीं हो सकते हैं, तो वे स्थैतिक डेटा के बारे में समान महसूस नहीं करते हैं। डर्टी रीड्स यहाँ चोट नहीं करेगा, लेकिन डबल रीड कभी-कभार हो सकता है। यह देखते हुए कि आपके पास स्थिर डेटा पर वैसे भी ब्लॉक नहीं होना चाहिए, यह जोखिम क्यों है?

  • लगभग कुछ भी जो एक एप्लिकेशन को फीड करता है जिसमें लेखन क्षमता भी होती है।

जब भी ठीक परिदृश्य ठीक नहीं है।

  • क्या कोई भी एप्लिकेशन या अपडेट प्रक्रियाएं बड़े एकल लेनदेन का उपयोग कर रही हैं? आपके द्वारा रिपोर्ट किए जा रहे बहुत सारे रिकॉर्ड को फिर से निकालने वाले लोग उस मामले में आप वास्तव में NOLOCKउन तालिकाओं पर किसी भी चीज़ के लिए उपयोग नहीं कर सकते ।

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

हां, मुझे लगता है कि यह उचित है। याद रखें कि अधिक महत्वपूर्ण मुद्दा यह सुनिश्चित कर रहा है कि संपादन बटन को मारने और जमा करने के समय के बीच डेटा किसी और द्वारा नहीं बदला गया है। आप इस तरह डेटा को लाने के लिए एक लेनदेन शुरू करके संभाल सकते हैं select item from things with (UPDLOCK)। वहाँ एक त्वरित मध्यांतर रखो ताकि अगर यह ताला तेजी से प्राप्त नहीं कर सके तो यह उपयोगकर्ता को यह बताता है कि इसे संपादित किया जा रहा है। यह न केवल उपयोगकर्ताओं बल्कि डेवलपर्स से आपको सुरक्षित रखेगा। केवल यहाँ समस्या है आपको टाइमआउट के बारे में सोचना शुरू करना होगा और आप इसे यूआई में कैसे संभाल सकते हैं।
एडमांटीश

6

रिपोर्टिंग के बारे में, हम अपने सभी क्वेरीज़ डेटाबेस पर क्वेरी को रोकने से रोकने के लिए इसका उपयोग करते हैं। हम ऐसा कर सकते हैं क्योंकि हम ऐतिहासिक डेटा खींच रहे हैं, अप-टू-माइक्रोसेकंड डेटा नहीं।


4

READ_UNCOMMITTED का उपयोग उस स्थिति में करें जब स्रोत बदलने की अत्यधिक संभावना नहीं है।

  • ऐतिहासिक डेटा पढ़ते समय। उदाहरण के लिए कुछ परिनियोजन लॉग जो दो दिन पहले हुआ था।
  • जब फिर से मेटाडेटा पढ़ रहे हैं। उदाहरण के लिए मेटाडेटा आधारित अनुप्रयोग।

जब आप जानते हैं कि READ_UNCOMMITTED का उपयोग न करें तो आपको पता चल जाएगा कि भ्रूण का ऑपरेशन के दौरान परिवर्तन हो सकता है।


1
मुझे लगता है कि रिवर्स लागू होता है। सबसे पहले स्थिर डेटा को बिना किसी ब्लॉक के ठीक से पढ़ा जाना चाहिए। यह तो है तो ब्लॉक करने का विकल्प अब वहाँ ठीक करने के लिए एक महत्वपूर्ण फांसी लेनदेन समस्या है की खोज की है। साथ ही उपयोगकर्ताओं को यह उम्मीद होगी कि पिछले साल की वार्षिक रिपोर्ट के लिए जो भी उन्होंने छापा है, वह अंतिम दशमलव स्थान से मेल खाएगा। वे आम तौर पर उन रिपोर्टों की अपेक्षा नहीं करते हैं जिन्हें वे जानते हैं कि निरंतर प्रवाह में हैं। यह विस्तृत, अत्यंत समय-संवेदनशील या वित्तीय रिपोर्टिंग के लिए नहीं जाता है लेकिन यदि 1000 में 1 इनपुट त्रुटि सहन करने योग्य है तो ऐसा है READ UNCOMMITTED
एडमांतीश

TLDR: यदि डेटा नहीं बदलेगा, तो आपको READ UNCOMMITTED की आवश्यकता नहीं है क्योंकि वैसे भी ब्लॉक नहीं हैं। यदि आप गलत हैं और यह बदल जाता है तो यह एक अच्छी बात है कि आपने उपयोगकर्ताओं को अपेक्षा से अधिक गंदा डेटा प्राप्त करने से रोक दिया है।
एडमांतीश

हां, मैं यहां @Adamantish से सहमत हूं - आप उन READ UNCOMMITTEDपरिस्थितियों में सबसे अधिक लाभ उठा सकते हैं जब आपका डेटा सक्रिय रूप से उपयोग किया जा रहा हो और आप संभावित गतिरोधों और लेन-देन रोलबैक से बचने के लिए सर्वर पर लोड को कम करना चाहते हैं, क्योंकि कुछ उपयोगकर्ता जहां लापरवाह हो रहे हैं " डेटाग्रिड के साथ एक वेब पेज में "ताज़ा करें" बटन। जो उपयोगकर्ता एक ही समय में रिकॉर्ड का एक गुच्छा देखते हैं, आमतौर पर अगर डेटा थोड़ा पुराना या आंशिक रूप से अपडेट किया जाता है, तो बहुत परवाह नहीं करता है। केवल जब कोई उपयोगकर्ता किसी रिकॉर्ड को संपादित करने वाला होता है, तब आप उसे सबसे सटीक डेटा देना चाहते हैं।
जस्टअमार्टिन

2

यह आपको गंदे रीड देगा, और आपको लेनदेन दिखाएगा जो अभी तक प्रतिबद्ध नहीं है। यह सबसे स्पष्ट जवाब है। मुझे नहीं लगता कि इसका उपयोग करने के लिए एक अच्छा विचार है कि यह सिर्फ आपके रीड्स को गति प्रदान करे। ऐसा करने के अन्य तरीके हैं यदि आप एक अच्छे डेटाबेस डिज़ाइन का उपयोग करते हैं।

यह भी दिलचस्प है कि क्या नहीं हो रहा है ध्यान दें। READ UNCOMMITTED न केवल अन्य तालिका तालों को अनदेखा करता है। यह भी अपने आप में कोई ताले पैदा नहीं कर रहा है।

विचार करें कि आप एक बड़ी रिपोर्ट तैयार कर रहे हैं, या आप एक बड़े और संभवतः जटिल चयन कथन का उपयोग करके अपने डेटाबेस से डेटा को माइग्रेट कर रहे हैं। यह एक साझा लॉक का कारण होगा जो आपके लेन-देन की अवधि के लिए साझा टेबल लॉक तक बढ़ाया जा सकता है। अन्य लेनदेन तालिका से पढ़ सकते हैं, लेकिन अपडेट असंभव हैं। यह एक बुरा विचार हो सकता है अगर इसका उत्पादन डेटाबेस पूरी तरह से बंद हो जाए।

यदि आप READ UNCOMMITTED का उपयोग कर रहे हैं तो आप टेबल पर साझा लॉक सेट नहीं करेंगे। आपको कुछ नए लेन-देन से परिणाम मिल सकता है या हो सकता है कि यह इस बात पर निर्भर न करे कि डेटा कहाँ डाला गया था और आपके SELECT लेन-देन को कितने समय तक पढ़ा है। उदाहरण के लिए पेज स्प्लिट होने पर आपको दो बार एक ही डेटा मिल सकता है (डेटा फ़ाइल में डेटा किसी अन्य स्थान पर कॉपी किया जाएगा)।

इसलिए, यदि आपके लिए यह बहुत महत्वपूर्ण है कि डेटा को आपके SELECT करते समय डाला जा सकता है, तो READ UNCOMMITTED का अर्थ हो सकता है। आपको यह विचार करना होगा कि आपकी रिपोर्ट में कुछ त्रुटियां हो सकती हैं, लेकिन अगर लाखों पंक्तियों के आधार पर और उनमें से केवल कुछ को अपडेट किया जाता है, तो परिणाम का चयन करते समय यह "काफी अच्छा" हो सकता है। एक पंक्ति की विशिष्टता की गारंटी नहीं दी जा सकती क्योंकि आपका लेनदेन सभी एक साथ विफल हो सकता है।

एक बेहतर तरीका पूरी तरह से स्नैपशॉट अलगाव स्तर का उपयोग करने के लिए हो सकता है लेकिन आपके अनुप्रयोगों को इसका उपयोग करने के लिए कुछ समायोजन की आवश्यकता हो सकती है। इसका एक उदाहरण यह है कि यदि आपका एप्लिकेशन दूसरों को पढ़ने से रोकने के लिए एक पंक्ति में अनन्य लॉक लेता है और UI में संपादन मोड में जाता है। SNAPSHOT अलगाव स्तर भी एक काफी प्रदर्शन जुर्माना (विशेष रूप से डिस्क पर) के साथ आता है। लेकिन आप उस समस्या पर हार्डवेयर को फेंक कर दूर कर सकते हैं। :)

डेटा में रिपोर्टिंग या लोडिंग डेटा के लिए उपयोग करने के लिए आप डेटाबेस का बैकअप बहाल करने पर भी विचार कर सकते हैं।


0

इसका उपयोग एक साधारण तालिका के लिए किया जा सकता है, उदाहरण के लिए एक इन्सर्ट-ओनली ऑडिट टेबल में, जहाँ मौजूदा पंक्ति का कोई अद्यतन नहीं है, और अन्य तालिका के लिए कोई fk नहीं है। इंसर्ट एक साधारण इंसर्ट है, जिसमें रोलबैक की कोई संभावना नहीं है।


-7

मैं हमेशा अब READ UNCOMMITTED का उपयोग करता हूं। यह कम से कम मुद्दों के साथ तेज है। अन्य अलगाव का उपयोग करते समय आप लगभग हमेशा कुछ अवरोधक मुद्दों पर आएंगे।

जब तक आप Auto Increment फ़ील्ड्स का उपयोग करते हैं और आवेषण पर थोड़ा अधिक ध्यान देते हैं तब तक आपका ठीक है, और आप अवरुद्ध समस्याओं को अलविदा कह सकते हैं।

आप READ UNCOMMITED के साथ त्रुटियां कर सकते हैं लेकिन ईमानदार होने के लिए, यह बहुत आसान है सुनिश्चित करें कि आपके आवेषण पूर्ण प्रमाण हैं। एक चयन से परिणाम का उपयोग करने वाले आवेषण / अपडेट केवल एक चीज है जिसे आपको देखने की आवश्यकता है। (यहां पढ़ी गई टिप्पणी का उपयोग करें, या यह सुनिश्चित करें कि गंदे रीड किसी समस्या का कारण नहीं हैं)

तो डर्टी रीड्स (विशेष रूप से बड़ी रिपोर्टों के लिए) पर जाएं, आपका सॉफ़्टवेयर सुचारू रूप से चलेगा ...


6
यह बहुत गलत है और केवल समस्याओं की सतह को छूता है जो नोलॉक के साथ हो सकती हैं। पेज विभाजित हो सकते हैं, जोड़ विफल हो सकते हैं, आप गैर-मौजूद डेटा या डुप्लिकेट डेटा पढ़ सकते हैं। इसका उपयोग मूर्ख बनाने का कोई तरीका नहीं है: आप इस अलगाव स्तर के तहत किसी भी चीज की सटीकता पर भरोसा नहीं कर सकते। READ COMMITTED SNAPSHOT एक कम खतरनाक "नकली रामबाण" है
मार्क सोउल

@MarkSowul इस उत्तर का अपमान मुझे अनुचित लगता है। @ क्लाइव स्पष्ट था कि वह Committedआवेषण और अद्यतन के लिए स्विच करेगा । अन्य समस्याओं के रूप में उन्होंने ऑटो-इंक्रीमेंट कुंजी का उपयोग करते हुए पृष्ठ-विभाजन के मुद्दों के बारे में जागरूकता का प्रदर्शन किया। मैं उनसे सहमत हूँ कि लगभग सभी मानव मात्र द्वारा पढ़ी जाने वाली लाइव रिपोर्टिंग अंतिम दशमलव स्थान में मामूली विसंगतियों को सहन कर सकती है। मैं सहमत हूँ कि यह विस्तृत लिस्टिंग या डेटा के लिए एक अलग कहानी है जिसे मशीन को पढ़ना और बदलना है और इसलिए क्लाइव।
अदामंतिश

1
यह टिप्पणी नोलॉक के साथ आने वाली संभावित समस्याओं की पूरी समझ की कमी को भी प्रदर्शित करती है। "अंतिम दशमलव स्थान में थोड़ी विसंगतियां" शायद ही इसे कवर करती हैं। यहां तक ​​कि "आवेषण / अद्यतनों के लिए प्रतिबद्ध" केवल पढ़ने के लिए उपयोग करना सामान्य सलाह के रूप में गलत है (क्या होगा यदि यह "रिकॉर्ड दर्ज करें यदि यह मौजूद नहीं है"?)। किसी भी घटना में, "[बिना पढ़ा हुआ] कम से कम मुद्दों के साथ तेज़ है" स्पष्ट रूप से गलत है।
मार्क सोउल

रिकॉर्ड के लिए, मैं आपके जवाब से सहमत हूँ, एडमंतीश: मोटे तौर पर सटीक एकत्रीकरण और कुछ और।
मार्क सोउल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.