क्वेरी को निष्पादित करने में "" निम्न त्रुटि के साथ विफल हुआ: "सूचकांक" "(विभाजन 1) टेबल पर" "पुनर्गठित नहीं किया जा सकता क्योंकि पृष्ठ स्तर लॉकिंग अक्षम है।"
अनुरक्षण योजना को ALTER INDEX REORGANIZE का प्रयास करना चाहिए, जो एक ऑनलाइन ऑपरेशन है। विखंडन (पृष्ठ क्रम में नहीं) को हटाने के लिए, पृष्ठों को लॉक और स्थानांतरित किया जाना चाहिए, जो कि संभव नहीं है यदि पृष्ठ ताले अक्षम किए गए हैं। पृष्ठ लॉक के बिना डीफ़्रैग्मेन्ट करने का एकमात्र तरीका पूरे विभाजन को लॉक करना है, जो केवल ऑनलाइन के रूप में REORGANIZE के लिए संभव नहीं है।
दो लॉकिंग योजनाओं के बीच अंतर क्या है, और उनकी वास्तविक दुनिया (उत्पादन में) परिणाम क्या हैं?
आपको यह समझने की जरूरत है कि किसी विशेष लॉक प्रकार को रोकने के प्रभाव का मूल्यांकन करने के लिए रिकॉर्ड और पृष्ठ क्या हैं। यदि आप SQL सर्वर संग्रहण इंटर्नल से अपरिचित हैं, तो रिकॉर्ड के एनाटॉमी और पेज के एनाटॉमी से शुरू करें । बहुत सरल शब्दों में कहें:
- पंक्तियाँ = अभिलेख
- पंक्तियों को 8kb के पृष्ठों में संग्रहीत किया जाता है
यदि आप अनुमत लॉक प्रकारों को बदलना चाहते थे:
- पेज लॉक = पंक्ति और टेबल लॉक को केवल अक्षम करें
- पंक्ति ताले अक्षम करें = पृष्ठ और तालिका लॉक केवल
- दोनों को अक्षम करें = टेबल लॉक केवल
ऐसे दो परिदृश्य हैं जिनके बारे में मुझे पता है कि लॉक प्रकार को अस्वीकार करना कहां तक फायदेमंद हो सकता है। इसका मतलब यह नहीं है कि वहाँ दूसरों को नहीं कर रहे हैं, उम्मीद है कि कोई और उदाहरण के साथ कदम होगा।
एक बार-बार एक्सेस किया गया लुकअप टेबल, जो बार - बार बदलता है - पेज और रो लेवल लॉक दोनों को अक्षम करके, सभी पाठक एक साझा टेबल लॉक लेंगे। यह मेज पर सामान्य इरादे-साझा किए जाने के बजाय तेजी से / सस्ता है, इसके बाद एक पृष्ठ पर इरादा-साझा किया जाता है और अंत में एक विशिष्ट पंक्ति या पंक्तियों पर एक साझा लॉक होता है।
एक विशिष्ट गतिरोध परिदृश्य को रोकना - यदि आप समवर्ती प्रक्रियाओं के कारण उत्पन्न गतिरोध का सामना करते हैं, जो एक ही पृष्ठ पर अक्सर होने वाले ताले प्राप्त करते हैं, तो पंक्ति ताले के परिणाम को रोकने के बजाय पृष्ठ ताले को लिया जा रहा है। केवल एक प्रक्रिया एक समय में पृष्ठ तक पहुंच सकती है, दूसरे को इंतजार करना होगा।
पहला उदाहरण सूक्ष्म अनुकूलन है और एक विशिष्ट प्रणाली पर औसत दर्जे का लाभ प्राप्त करने की संभावना नहीं है। दूसरा उस विशेष गतिरोध परिदृश्य को हल करेगा, लेकिन कोड के एक अलग खंड में कंसीडर को मारने जैसे अप्रत्याशित दुष्प्रभाव को पेश कर सकता है। पूरी तरह से प्रभाव का आकलन करना मुश्किल है, सावधानी के साथ दृष्टिकोण!
डिफ़ॉल्ट दोनों के लिए सक्षम होना चाहिए और इसे अच्छे कारण के बिना नहीं बदला जाना चाहिए ।