डेटा आंदोलन के कारण NOLOCK के साथ स्कैन जारी नहीं रख सका


10

हम SQL Server 2000 चलाते हैं और हमें हर रात इनमें से कुछ त्रुटियां मिलती हैं।

Could not continue scan with NOLOCK due to data movement

यह त्रुटि फेंकने वाली क्वेरी एक बड़ी जटिल क्वेरी है जो एक दर्जन से अधिक तालिकाओं में मिलती है। हमारे अंतर्निहित डेटा को अक्सर अपडेट किया जा सकता है।

सांस्कृतिक 'सर्वोत्तम-अभ्यास' यह है कि, अतीत में, NOLOCKसंकेतों की शुरूआत ने प्रदर्शन में वृद्धि की और बेहतर संगति की। इस क्वेरी को 100% सटीक होने की आवश्यकता नहीं है, अर्थात हम गंदे रीड्स आदि को सहन करेंगे। हालांकि, हम यह समझने में संघर्ष कर रहे हैं कि डेटाबेस इस त्रुटि को क्यों फेंक रहा है, भले ही हमारे पास ये सभी लॉकिंग संकेत हैं।

क्या कोई इस पर कुछ प्रकाश डाल सकता है - कोमल बनो, मैं वास्तव में एक प्रोग्रामर हूं, डीबीए नहीं हूं :)

PS: हमने पहले बताए गए फिक्स को लागू किया है: http://support.microsoft.com/kb/815008


3
मैं NOLOCK ड्रॉप करूंगा और क्वेरी / इंडेक्स / प्रक्रिया को ठीक करूंगा। हम निश्चित रूप से मदद कर सकते हैं ... यह भी देखें en.wikipedia.org/wiki/Hallp3_Problem
gbn

3
@ SQLKiwi: SQL 2012 गंदे स्कैन के तहत डेटा आंदोलन के कई मामलों में इनायत करता है (आवंटन क्रम में अगले पृष्ठ पर जारी है)।
रेमस रुसानु

1
@ SQLKiwi: हाँ, अभी भी हैं। अच्छी खबर पर: गंदे स्कैन द्वारा समर्थित श्राप देने वालों को इसे और अधिक अच्छी तरह से संभालना चाहिए।
रेमस रूसु

जवाबों:


7

अनिवार्य रूप से, तो क्या होता है एक पंक्ति प्रक्रिया एक से नष्ट कर दिया जाता है, जबकि प्रक्रिया बी स्कैन (या तो पर कर रहा है - यह SQL सर्वर के साथ एक यथोचित अच्छी तरह से ज्ञात मुद्दा 2000 है READ UNCOMMITTEDया WITH (NOLOCK)), तो प्रक्रिया बी चला जाता है "हुह क्या इस डेटा का क्या हुआ “जब इसे पढ़ने की कोशिश करता है। अधिक सटीक रूप से, प्रक्रिया बी को इंडेक्स पढ़ने के बाद पंक्ति को हटाना पड़ता है, लेकिन इससे पहले कि वह डेटा पंक्ति को पढ़ने का प्रयास करता है।

क्रेग फ्रीडमैन यहाँ एक अच्छा लेखन देता है

सौभाग्य से, फिक्स अपेक्षाकृत सरल है: http://support.microsoft.com/kb/815008

यदि वह काम नहीं करता है, तो आपके पास अपने सभी WITH (NOLOCK)संकेतों को हटाने और ऊपर से कुछ करने के लिए अपने लेनदेन अलगाव स्तर को सेट करने का थोड़ा अधिक दर्दनाक विकल्प है READ UNCOMMITTED


हम उस फ़िक्स के साथ अद्यतित हैं - हमने ध्वज को लागू किया, पुनः आरंभ किया और हमें अभी भी ये त्रुटियां हैं।
सियारन आर्चर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.