Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

NOLOCK (एसक्यूएल सर्वर संकेत) खराब अभ्यास है?

स्टैक ओवरफ्लो पर काम करने से पहले, मैं NOLOCK . के खिलाफ था प्रिंसिपल पर कि आप संभावित रूप से SELECT कर सकते हैं NOLOCK . के साथ और डेटा के साथ परिणाम वापस प्राप्त करें जो पुराने या असंगत हो सकते हैं। सोचने का एक कारक यह है कि एक ही समय में कितने रिकॉर्ड डाले/अपडेट किए जा सकते हैं, दूसरी प्रक्रिया उसी तालिका से डेटा का चयन कर सकती है। यदि ऐसा बहुत अधिक होता है तो जब तक आप डेटाबेस मोड जैसे READ COMMITED SNAPSHOT का उपयोग नहीं करते हैं, तब तक गतिरोध की उच्च संभावना है। ।

मैंने तब से NOLOCK . के उपयोग पर अपना दृष्टिकोण बदल दिया है यह देखने के बाद कि यह कैसे बेहतर हो सकता है SELECT प्रदर्शन के साथ-साथ बड़े पैमाने पर लोड किए गए SQL सर्वर पर गतिरोध को खत्म करना। कई बार आपको इस बात की परवाह नहीं होती है कि आपका डेटा बिल्कुल 100% प्रतिबद्ध नहीं है और आपको परिणाम जल्दी वापस चाहिए, भले ही वे पुराने हों।

NOLOCK . का उपयोग करने के बारे में सोचते समय स्वयं से एक प्रश्न पूछें :

<ब्लॉकक्वॉट>

क्या मेरी क्वेरी में एक तालिका शामिल है जिसमें उच्च संख्या में INSERT . है /UPDATE कमांड और क्या मुझे परवाह है कि किसी क्वेरी से लौटाए गए डेटा में किसी निश्चित क्षण में ये परिवर्तन गायब हो सकते हैं?

अगर उत्तर नहीं है, तो NOLOCK . का प्रयोग करें प्रदर्शन में सुधार करने के लिए।

मैंने अभी-अभी NOLOCK . के लिए एक त्वरित खोज की है स्टैक ओवरफ्लो के लिए कोड बेस के भीतर कीवर्ड और 138 इंस्टेंस पाए गए, इसलिए हम इसे कुछ जगहों पर उपयोग करते हैं।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर जॉब्स को एक SQL सर्वर इंस्टेंस से दूसरे में कैसे माइग्रेट करें

  2. डालने के दौरान सी # में एसक्यूएल अद्वितीय बाधा उल्लंघन पकड़ने का सबसे अच्छा तरीका

  3. एक यूडीएफ एक सबक्वायरी से इतना धीमा क्यों है?

  4. T-SQL का उपयोग कर SQL सर्वर में किसी तालिका के लिए स्तंभ विशेषाधिकार प्राप्त करें:sp_column_privileges

  5. SQL सर्वर में एक विशिष्ट कॉलम वाली तालिकाएँ कैसे खोजें?