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

चयन प्रश्नों पर SQL सर्वर लॉक को समझना

एक SELECT SQL सर्वर में एक साझा लॉक रखेगा एक टेबल पंक्ति पर - और दूसरा SELECT एक साझा लॉक की भी आवश्यकता होगी, और वे एक दूसरे के साथ संगत हैं।

तो नहीं - एक SELECT दूसरे को ब्लॉक नहीं कर सकता SELECT

क्या WITH (NOLOCK) क्वेरी संकेत का उपयोग उस डेटा को पढ़ने में सक्षम होने के लिए किया जाता है जो सम्मिलित होने की प्रक्रिया में है (दूसरे कनेक्शन द्वारा) और जो अभी तक प्रतिबद्ध नहीं है।

उस क्वेरी संकेत के बिना, एक SELECT चल रहे INSERT . द्वारा किसी तालिका को पढ़कर अवरोधित किया जा सकता है (या UPDATE ) कथन जो एक अनन्य . रखता है पंक्तियों (या संभवतः एक पूरी तालिका) पर लॉक करें, जब तक कि उस ऑपरेशन का लेन-देन नहीं किया गया हो (या वापस ले लिया गया हो)।

WITH (NOLOCK) की समस्या संकेत है:हो सकता है कि आप उन डेटा पंक्तियों को पढ़ रहे हों, जिन्हें अंत में सम्मिलित नहीं किया जा रहा है (यदि INSERT लेन-देन वापस लुढ़का हुआ है) - तो आपका उदा। रिपोर्ट डेटा दिखा सकती है जो वास्तव में डेटाबेस के लिए कभी प्रतिबद्ध नहीं है।

एक और क्वेरी संकेत है जो उपयोगी हो सकता है - WITH (READPAST) . यह SELECT . को निर्देश देता है केवल उन पंक्तियों को छोड़ने का आदेश दें जिन्हें वह पढ़ने का प्रयास करता है और जो विशेष रूप से बंद हैं। SELECT अवरुद्ध नहीं होगा, और यह किसी भी "गंदे" अन-प्रतिबद्ध डेटा को नहीं पढ़ेगा - लेकिन यह कुछ पंक्तियों को छोड़ सकता है, उदा। तालिका में अपनी सभी पंक्तियां न दिखाएं।



  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 सर्वर स्वास्थ्य जांच, भाग 5:सांख्यिकी प्रतीक्षा करें

  2. SQL सर्वर 2017 में एक डेटाबेस बनाएँ

  3. दो SQL सर्वर डेटाबेस (स्कीमा और डेटा) की तुलना करने के लिए सबसे अच्छा उपकरण क्या है?

  4. रिलेशनल डेटाबेस में कस्टम फ़ील्ड के लिए डिज़ाइन पैटर्न

  5. MS SQL सर्वर में DBA की सामान्य गलतियाँ