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

पंक्ति, पृष्ठ और टेबल लॉक क्या हैं? और कब उनका अधिग्रहण किया जाता है?

पंक्ति लॉक

एक पंक्ति लॉक SQL सर्वर में संभव लॉकिंग की ग्रैन्युलैरिटी का निम्नतम स्तर है। इसका मतलब है कि एक या अधिक विशिष्ट पंक्तियों को लॉक कर दिया जाएगा, और समवर्ती क्वेरी द्वारा लॉक करने के लिए आसन्न पंक्तियाँ अभी भी उपलब्ध हैं।

पेज लॉक

SQL सर्वर में एक पेज लॉक 8K मूल्य का डेटा लॉक कर देगा, तब भी जब आपकी क्वेरी को पेज से केवल 10 बाइट्स की आवश्यकता होती है। तो आपकी क्वेरी अतिरिक्त डेटा लॉक कर देगी जिसका आप अपनी क्वेरी में अनुरोध नहीं करते हैं।

होबट लॉक

जब एक टेबल को "एसक्यूएल सर्वर टेबल पार्टीशनिंग" के साथ विभाजित किया जाता है तो यह संभव है कि सिंगल पार्टीशन लॉक हो जाएगा (होबट का मतलब हीप या बी-ट्री है)

नोट: HOBT लॉक में लॉक एस्केलेशन डिफ़ॉल्ट रूप से अक्षम है। ALTER TABLE MyTable SET (LOCK_ESCALATION = AUTO) चलाएँ HOBT लॉक एस्केलेशन को सक्षम करने के लिए।

टेबल लॉक

एक टेबल लॉक पूरी टेबल को लॉक कर देगा।

डेटा पेज क्या हैं

Microsoft SQL सर्वर अपने सभी डेटा को "डेटा पेज" में व्यवस्थित करता है, जिसमें 8K मूल्य का डेटा हो सकता है। इसका मतलब है कि SQL सर्वर 8K में किसी भी डेटा एक्सेस के लिए जानकारी पढ़ी जाएगी।

डेटा पेज में केवल एक टेबल की जानकारी हो सकती है और पेज का लेआउट MSDN पर अच्छी तरह से प्रलेखित है

तथ्य यह है कि SQL सर्वर हमेशा एक पूर्ण डेटा पृष्ठ पढ़ेगा, आपको यह भी एक विचार देता है कि वह पृष्ठ स्तर के ताले का उपयोग क्यों करना पसंद करता है। पेज लेवल लॉक का निहितार्थ यह है कि आप जितना सोचते हैं उससे कहीं अधिक डेटा लॉक कर सकते हैं।

उदाहरण के लिए, मान लें कि हमारे पास ID फ़ील्ड पर क्लस्टर इंडेक्स के साथ कुल रिकॉर्ड आकार 1024 बाइट्स वाली एक तालिका है . जब हम निम्नलिखित क्वेरी चलाते हैं:MyTable (xlock) से SELECT * from MyTable (xlock) where ID = 123 न केवल उस रिकॉर्ड को लॉक किया जाएगा, बल्कि (पेज फिल के आधार पर) अधिकतम 3 अतिरिक्त रिकॉर्ड भी लॉक किए जाएंगे।

ये ताले कब प्राप्त किए जाते हैं

क्वेरी गवर्नर द्वारा एक क्वेरी को पार्स किया जाएगा और आवश्यक लॉक का निर्धारण और लॉक मैनेजर से अनुरोध किया जाएगा। SQL सर्वर लॉकिंग रणनीति निर्धारित करने के लिए प्रदर्शन और विवाद के बीच संतुलन बनाने का प्रयास करेगा।

SQL सर्वर एक "लॉक एस्केलेशन" सिस्टम का भी अनुसरण करता है जो एक निश्चित प्रकार के 5000 से अधिक लॉक प्राप्त होने पर लॉकिंग की ग्रैन्युलैरिटी को कम करेगा। अधिक जानकारी के लिए लॉक एस्केलेशन पर यह लेख देखें।

लॉकिंग संकेत . का उपयोग करके इस व्यवहार में सुधार किया जा सकता है संकेतों . पर जोर देने के साथ , एक प्रश्न में आप प्रति तालिका निर्दिष्ट कर सकते हैं कि आप किस प्रकार के ताले पसंद करेंगे। SQL सर्वर आपके अनुरोध का सम्मान करने का प्रयास करेगा, लेकिन यह अभी भी लॉक एस्केलेशन लागू करेगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्रति समूह पहली पंक्ति का चयन

  2. COS () SQL सर्वर में उदाहरण

  3. क्या आप इन मेट्रिक्स के साथ SQL सर्वर के प्रदर्शन को माप रहे हैं?

  4. SQL सर्वर में टेक्स्ट क्वालीफायर के साथ बल्क इंसर्ट

  5. डेटाबेस से अशक्त दिनांक समय कैसे प्राप्त करें?