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

टैब्‍लॉक बनाम टैब्‍लॉक्‍स

बड़ा अंतर, TABLOCK "साझा" ताले और TABLOCKX . को हथियाने की कोशिश करेंगे अनन्य ताले।

यदि आप एक लेन-देन में हैं और आप एक टेबल पर एक विशेष लॉक लेते हैं, उदा:

SELECT 1 FROM TABLE WITH (TABLOCKX)

कोई अन्य प्रक्रिया किसी . को हथियाने में सक्षम नहीं होगी मेज पर ताले, जिसका अर्थ है सभी लेन-देन होने तक तालिका से बात करने का प्रयास करने वाले प्रश्नों को अवरुद्ध कर दिया जाएगा।

TABLOCK केवल एक साझा लॉक को पकड़ लेता है, यदि आपका लेन-देन अलगाव READ COMMITTED है, तो स्टेटमेंट निष्पादित होने के बाद साझा किए गए लॉक जारी किए जाते हैं (चूक)। यदि आपका अलगाव स्तर अधिक है, उदाहरण के लिए:SERIALIZABLE , साझा ताले लेन-देन के अंत तक आयोजित किए जाते हैं।

साझा ताले, हम्म, साझा किए गए हैं। मतलब 2 लेन-देन दोनों एक ही समय में टेबल से डेटा पढ़ सकते हैं यदि वे दोनों टेबल पर S या IS लॉक रखते हैं (TABLOCK के माध्यम से) ) हालांकि, अगर transaction A टेबल पर एक साझा लॉक रखता है, transaction B जब तक सभी साझा किए गए लॉक जारी नहीं हो जाते, तब तक एक विशेष लॉक को हथियाने में सक्षम नहीं होगा। एमएसडीएन पर पढ़ें कि कौन से ताले किसके साथ संगत हैं।

दोनों संकेत डीबी को अधिक दानेदार ताले (जैसे पंक्ति या पृष्ठ स्तर के ताले) लेने से बाईपास करने का कारण बनते हैं। सिद्धांत रूप में, अधिक दानेदार ताले आपको बेहतर संगामिति की अनुमति देते हैं। तो उदाहरण के लिए, एक लेन-देन आपकी तालिका में पंक्ति 100 और दूसरी पंक्ति 1000, एक ही समय में को अपडेट कर सकता है दो लेन-देन से (यह पेज लॉक के साथ मुश्किल हो जाता है, लेकिन इसे छोड़ देता है)।

सामान्य तौर पर दानेदार ताले वही होते हैं जो आप चाहते हैं, लेकिन कभी-कभी आप किसी विशेष ऑपरेशन के प्रदर्शन को बढ़ाने और गतिरोध की संभावना को खत्म करने के लिए db संगामिति को कम करना चाह सकते हैं।

सामान्य तौर पर आप TABLOCK . का उपयोग नहीं करेंगे या TABLOCKX जब तक आपको किसी किनारे के मामले के लिए इसकी बिल्कुल आवश्यकता न हो।



  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 सर्वर में प्राथमिक कुंजी

  2. SQL सर्वर मेमोरी-ऑप्टिमाइज़्ड टेबल्स में इंडेक्स का उपयोग करना

  3. क्या स्तंभ क्रमसूचक स्थिति का उपयोग करके sql सर्वर डेटा का चयन करना संभव है?

  4. सीटीई और सबक्वेरी के बीच अंतर?

  5. T-SQL का उपयोग करके SQL सर्वर में एक विदेशी कुंजी का नाम बदलें