हर प्रश्न में (nolock) संकेत का उपयोग न करें


23

क्या तुमने कभी एक क्वेरी संकेत का उपयोग नहीं जायज है?

मैं WITH (NOLOCK)हर एक क्वेरी में देख रहा हूं जो बहुत व्यस्त सर्वर को हिट करता है। यह इस बिंदु पर है कि डेवलपर्स को लगता है कि यह केवल डिफ़ॉल्ट रूप से होना चाहिए क्योंकि वे हजारों बार अपने कोड में इसे देखने से नफरत करते हैं।

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

यदि आपके पास इस बात का स्पष्ट उदाहरण है कि NOLOCKसंकेत के इस दुरुपयोग के खिलाफ मामला कैसे प्रस्तुत किया जाए, तो इसकी सराहना की जाएगी।

जवाबों:


17

आप अपनी लड़ाइयाँ और लड़ाइयाँ इस तरह से आसानी से नहीं जीत सकते। हमारे पास एक प्रणाली है जहां हर डीएमएल को ROWLOCK संकेत के साथ संकेत दिया जाता है (एक पंक्ति या कई हजार पंक्तियों को संशोधित करने के बावजूद)। मैंने कई उदाहरण दिखाए कि यह वास्तव में प्रदर्शन को क्यों प्रभावित करता है लेकिन जैसा कि सिस्टम पहले से ही काम कर रहा है, परिवर्तन के लिए प्रतिरोध है। ध्यान दें कि मैंने उन्हें आश्वस्त किया है कि यह आगे बढ़ने के लिए उपयोग न करें।

NOLOCK में जगह है, लेकिन मैं कुछ अच्छे संदर्भों की सिफारिश कर सकता हूं जो इसका उपयोग करने की परेशानियों को दर्शाते हैं:


11

इसके पहले SO पर चर्चा की जा चुकी है:

बहुत व्यस्त परिभाषित करें। हमारे पास उच्च मात्रा (प्रति सेकंड 50k नई पंक्तियाँ, बड़े समुच्चय आदि) हैं और डोडी डेटा प्राप्त करने की आवश्यकता भी नहीं है


9

आपको अपने सहयोगियों को अलगाव स्तरों को समझने के महत्व को समझाना होगा। उन्हें उदाहरण दिखाओ। सबसे अच्छा और सबसे आसान स्पष्टीकरण मुझे लिटिल केंद्र के अलगाव स्तरों के पोस्टर पर मिला । उनसे पूछें कि उन्हें क्यों लगता है कि उन्हें नोलॉक संकेत की आवश्यकता है। वे "सेट लेनदेन अलगाव स्तर ..." कथनों का उपयोग क्यों नहीं करते हैं? पूछें कि वास्तव में ऐसी कौन सी स्थिति है जिसे वे ठीक करना चाहते हैं, हो सकता है कि उनके पास गतिरोध हो, अवरुद्ध हो..तो। यदि वे सिर्फ ताले को पकड़ना नहीं चाहते हैं तो वे स्नैपशॉट अलगाव स्तर पर विचार कर सकते हैं।

केवल उनसे पूछकर ही आपके पास एक स्पष्ट तस्वीर हो सकती है।

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