मैं देख सकता हूं कि SQL सर्वर में पंक्ति स्तर और पृष्ठ स्तर लॉकिंग को कैसे बंद करें, लेकिन मुझे पंक्ति स्तर लॉकिंग का उपयोग करने के लिए SQL सर्वर को मजबूर करने का कोई तरीका नहीं मिल रहा है। पंक्ति स्तर लॉकिंग का उपयोग करने के लिए SQL सर्वर को मजबूर करने का कोई तरीका है और पृष्ठ स्तर लॉकिंग का उपयोग नहीं करते हैं?SQL सर्वर में पंक्ति स्तर लॉकिंग को मजबूर करना संभव है?
उत्तर
आप चप्पू-आंकड़ा संकेत का उपयोग कर सकते, लेकिन AFAIK एसक्यूएल अगर यह संसाधनों
From the doco पर कम चलाता है यह आगे भेजने के लिए तय कर सकते हैं:
चप्पू-आंकड़ा उस पंक्ति ताले हैं लिया निर्दिष्ट करता है कि पेज या तालिका ताले आमतौर पर हैं। जब एसएनएपीएसएचओटी अलगाव स्तर पर चल रहे लेनदेन में निर्दिष्ट किया गया है, तो पंक्ति ताले नहीं हैं जब तक कि रोवॉक अन्य तालिका संकेतों के साथ संयुक्त नहीं होता है, जिन्हें ताले, जैसे यूपीडॉक और होल्डॉक की आवश्यकता होती है।
और
लॉक संकेत चप्पू-आंकड़ा, UPDLOCK, और XLOCK कि पंक्ति-स्तर ताले प्राप्त वास्तविक डेटा पंक्तियों के बजाय सूचकांक कुंजी पर ताले डाल सकते हैं। उदाहरण के लिए, अगर एक तालिका nonclustered अनुक्रमणिका, और एक SELECT कथन एक ताला संकेत का उपयोग कर है एक कवर सूचकांक द्वारा नियंत्रित किया जाता, एक ताला में सूचकांक कुंजी सूचकांक को कवर के बजाय डेटा पंक्ति पर प्राप्त किया जाता है आधार तालिका में।
And finally इस SQL सर्वर 2005 में ताला वृद्धि के बारे में एक बहुत में गहराई से स्पष्टीकरण जो एसक्यूएल सर्वर में बदल गया था देता है 2008
वहाँ भी है, बहुत गहराई में: Locking in The Database Engine (किताबों में ऑनलाइन)
तो, सामान्य रूप में
UPDATE
Employees WITH (ROWLOCK)
SET Name='Mr Bean'
WHERE Age>93
ठीक होना चाहिए, लेकिन अनुक्रमित और सर्वर पर लोड के आधार पर यह एक पृष्ठ का लॉक करने के लिए बढ़ते हो सकता है।
बस जोड़ने के लिए, एसक्यूएल सर्वर 2008+ में आप प्रभावी रूप से 'वैकल्पिक तालिका तालिकानाम सेट (LOCK_ESCALATION = अक्षम) ' –
[रीमस Rusanu के लिए आपकी टिप्पणियों के आधार पर] के साथ लॉक एस्केलेशन को अक्षम कर सकते हैं इसका मतलब है कि हम पंक्ति को लॉक करने के लिए कुछ भी नहीं कर सकते सब, ओरेकल यह कैसे करता है? – bjan
@bjan सुनिश्चित नहीं है, सामान्य ओरेकल की स्नैपशॉट प्रकृति में इसका मतलब है कि यह किसी भी तरह की लॉकिंग आवश्यकताओं के लिए कम प्रवण है। आम तौर पर मैं किसी भी रोलॉक संकेत से बचूंगा, इसकी लगभग कभी आवश्यकता नहीं है –
आप वास्तव में कुछ भी करने के लिए अनुकूलक को मजबूर नहीं कर सकते हैं, लेकिन आप इसे मार्गदर्शन कर सकते हैं।
UPDATE
Employees WITH (ROWLOCK)
SET Name='Mr Bean'
WHERE Age>93
ALTER/CREATE INDEX की ALLOW_PAGE_LOCKS खंड का उपयोग करें:
ALTER INDEX indexname ON tablename SET (ALLOW_PAGE_LOCKS = OFF);
एक महत्वपूर्ण नोट यह है कि यह तालिका लॉक में बढ़ सकता है यदि यह संसाधनों पर कम चला जाता है –
@ सैम: विवरण;) विज्ञापन में सत्य: मैं ** ** कभी भी अपने डेटाबेस पर इस बंद को चालू नहीं करूंगा। समाधान हमेशा स्कीमा और प्रश्नों को सही ढंग से डिजाइन करने के लिए होता है ताकि स्कैन (जो वृद्धि के लिए अपराधी हैं) शुरू नहीं होते हैं ... –
पूरी तरह से सहमत हैं ... इस तरह के हैक्स की आवश्यकता के लिए बहुत दुर्लभ है और फिर वैसे भी आपको काटने का अंत –
- 1. SQL सर्वर 2012 में पंक्ति स्तर सुरक्षा
- 2. SQL सर्वर 2008 में पंक्ति स्तर सुरक्षा लागू करना
- 3. बड़े टेबल के लिए पंक्ति-स्तर लॉकिंग से तालिका-स्तर लॉकिंग बेहतर क्यों है?
- 4. SQL सर्वर में लॉकिंग रणनीति कैसे बदलें?
- 5. SQL सर्वर
- 6. SQL सर्वर में पंक्ति संख्या असाइन करना, लेकिन मान
- 7. लॉकिंग पंक्ति 2005-2008
- 8. SQL सर्वर 2005 में पहली पंक्ति छोड़ें?
- 9. एक पंक्ति सम्मिलित करना और SQL सर्वर सीई
- 10. MySQL पंक्ति लॉकिंग के नुकसान
- 11. inno डीबी अलगाव स्तर और लॉकिंग
- 12. एसक्यूएल सर्वर नेटवर्क यातायात को संपीड़ित करना संभव है?
- 13. टेक्स्टरेरा में कैरिज रिटर्न को मजबूर करना
- 14. SQL सर्वर
- 15. SQL सर्वर में सम्मिलित होने पर रिकॉर्ड के "आईडी" को प्राप्त करना संभव है?
- 16. SQL सर्वर 2005 को SQL Server 2005 को डाउनग्रेड करना
- 17. SQL सर्वर
- 18. SQL सर्वर
- 19. SQL सर्वर पंक्ति दिनांक अंतिम बार संशोधित
- 20. एसक्यूएल: डेटा की पंक्ति "सुरक्षित लिखें" पंक्ति संभव है?
- 21. SQL सर्वर
- 22. SQL सर्वर
- 23. SQL सर्वर कनेक्शन प्रबंधित करना
- 24. SQL सर्वर
- 25. एसक्यूएलकेमी में बहु-स्तर बहुरूपता संभव है?
- 26. SQL सर्वर
- 27. क्या कैशिंग के साथ SQL सर्वर के प्रदर्शन में सुधार करना संभव है?
- 28. SQL सर्वर डेटाबेस में ट्रिगर करने के लिए पैरामीटर पास करना संभव है?
- 29. SQL सर्वर
- 30. क्या SQL सर्वर के NewId() में कॉलम डिफ़ॉल्ट सेट करना संभव है?
मुख्य प्रश्न होता हो: ** क्यों ** पृथ्वी पर आप पहली बार में ऐसा करना चाहते हैं हैं जगह?? –
मेरे पास दो SQL स्टेटमेंट्स डेडलॉक में चल रहे हैं, जिनकी मुझे उम्मीद नहीं थी। देखें: http://stackoverflow.com/questions/3112699/how-can-i-avoid-a-deadlock-between-these-two-sql-statements – Elan
@marc_s मुझे वही आवश्यकता थी। तुम जानते हो क्यों? मेरे पास एक ऐसा स्पैम है जिसे समानांतर में चलाने की आवश्यकता है और जहां मेरे पास बड़ी संख्या में पंक्तियों द्वारा संशोधित करने के लिए एकाधिक तालिकाओं के लिए कोड है। कोई विचार नहीं कि इसे वैध और प्राकृतिक आवश्यकता के रूप में क्यों नहीं माना जाना चाहिए। समस्या यह है कि यह SQL सर्वर में deadlock का कारण बनता है .. – Mashrur