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

SQL सर्वर, भ्रामक XLOCK और अनुकूलन

X . की विशिष्टता ताले बनाम U ताले

नीचे लॉक संगतता मैट्रिक्स में यह देखा जा सकता है कि X लॉक केवल स्कीमा स्थिरता और इन्सर्ट रेंज-नल लॉक प्रकारों के साथ संगत है। U निम्नलिखित अतिरिक्त साझा लॉक प्रकारों के साथ संगत है S /IS /RS-S /RI-S /RX-S

लॉक संगतता मैट्रिक्स http://i.msdn.microsoft.com/ms186396.LockConflictTable(en-us,SQL.105).gif

X . की ग्रैन्युलैरिटी ताले

ये सभी स्तरों पर ठीक-ठाक निकाले जाते हैं। नीचे दी गई स्क्रिप्ट और प्रोफाइलर ट्रेस यह दर्शाता है कि उन्हें पंक्ति स्तर पर सफलतापूर्वक निकाला जा रहा है।

CREATE TABLE test_table (id int identity(1,1) primary key, col char(40))

INSERT INTO test_table
SELECT NEWID() FROM sys.objects

select * from test_table with (rowlock,XLOCK) where id=10

लेकिन पंक्तियों को अभी भी पढ़ा जा सकता है!

यह पता चला है कि read committed . पर अलगाव स्तर SQL सर्वर हमेशा S को नहीं निकालेगा यदि उनके बिना अप्रतिबद्ध डेटा पढ़ने का कोई जोखिम नहीं है, तो यह इस चरण को छोड़ देगा। इसका मतलब है कि कभी भी लॉक संघर्ष होने की कोई गारंटी नहीं है।

हालाँकि यदि प्रारंभिक चयन with (paglock,XLOCK) . है तो यह करेगा पढ़ने के लेन-देन को X . के रूप में रोकें पेज पर लॉक IS . को ब्लॉक कर देगा पेज लॉक जिसकी हमेशा पाठक को आवश्यकता होगी। यह निश्चित रूप से समवर्ती पर प्रभाव डालेगा।

अन्य चेतावनियां

यहां तक ​​कि अगर आप पंक्ति/पृष्ठ को लॉक करते हैं, तो इसका मतलब यह नहीं है कि आप तालिका में उस पंक्ति के सभी एक्सेस को ब्लॉक कर देते हैं। क्लस्टर्ड इंडेक्स में एक पंक्ति पर लॉक एक कवरिंग गैर-क्लस्टर इंडेक्स में संबंधित पंक्ति से डेटा पढ़ने वाले प्रश्नों को नहीं रोकेगा।



  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. क्या स्पॉटलाइट क्लाउड मॉनिटरिंग से जुड़े सुरक्षा जोखिम हैं?

  3. सम्मिलित पंक्ति की पीके गाइड प्राप्त करने का सबसे अच्छा तरीका

  4. SQL सर्वर समर्थित संस्करण मैट्रिक्स

  5. SQL सर्वर (T-SQL) में REPLICATE () फ़ंक्शन कैसे काम करता है