2010-04-22 12 views
5

मुझे 10 वर्षीय ट्रांजैक्शनल सिस्टम का प्रभारी बनाया गया है जहां अधिकांश व्यावसायिक तर्क डेटाबेस स्तर (ट्रिगर्स, संग्रहीत प्रक्रियाओं आदि) पर लागू किया जाता है। विन 2000 सर्वर, एमएसएसक्यूएल 2000 एंटरप्राइज़। सिस्टम को बदलने या अपडेट करने के लिए तत्काल योजनाओं पर विचार नहीं किया जा रहा है।SQL तालिका में क्लस्टर्ड इंडेक्स जोड़ना: लाइव उत्पादन प्रणाली के लिए कौन से खतरे मौजूद हैं?

मूल प्रक्रिया एक प्रोग्राम है जो लेनदेन निष्पादित करता है - विशेष रूप से, यह विभिन्न पैरामीटर के साथ संग्रहीत प्रक्रिया निष्पादित करता है; आइए इसे sp_ProcessTrans पर कॉल करें। कार्यक्रम संग्रहीत प्रक्रिया को एसिंक्रोनस अंतराल पर निष्पादित करता है।

अपने आप से, चीजें ठीक काम करती हैं, लेकिन इस कार्यक्रम के 30 उदाहरण दूरस्थ रूप से स्थित वर्कस्टेशंस पर हैं, वे सभी अतुल्यकालिक रूप से sp_ProcessTrans निष्पादित करते हैं और फिर SQL सर्वर से डेटा पुनर्प्राप्त करते हैं। निष्पादन काफी नियमित है - एक मिनट में 0 से 60 गुना, इस बात के आधार पर कि प्रोग्राम उदाहरण किस चीज के लिए ज़िम्मेदार है।

10 वर्षों के डेटा वृद्धि के साथ सिस्टम का प्रदर्शन काफी कम हो गया है: कारण Employee तालिका पर डेडलॉक्स, विशेष रूप से डेडलॉक प्रतीक्षा समय है।

मैं खोज की है:

  • sp_ProcessTrans के निष्पादन में, यह एक Employee मेज से का चयन करता है 7 बार
  • का चयन एक क्षेत्र पर किया जाता है कि प्राथमिक कुंजी
  • नहीं सूचकांक मौजूद नहीं है इस क्षेत्र में इस प्रकार एक मेज स्कैन प्रति लेन-देन 7 बार किया जाता है

तो गतिरोध का कारण स्पष्ट है। मैंने फ़ील्ड पर एक गैर-अनन्य आदेशित क्लस्टर सूचकांक बनाया (लगभग अद्वितीय, NUM(7), बहुत ही कम परिवर्तन)। परीक्षण पर्यावरण में तत्काल सुधार हुआ था। समस्या यह है कि मैं परीक्षण वातावरण में deadlocks अनुकरण नहीं कर सकता। मुझे 30 वर्कस्टेशन की आवश्यकता होगी, और मुझे उन स्टेशनों पर 'यथार्थवादी' गतिविधि अनुकरण करने की आवश्यकता होगी, इसलिए विज़ुअलाइजेशन समाप्त हो गया है।

मुझे यह जानने की ज़रूरत है कि मुझे डाउनटाइम शेड्यूल करना होगा या नहीं। एमएसएलक्यूएल के लिए एक इंडेक्स बनाना जोखिम भरा ऑपरेशन नहीं होना चाहिए, लेकिन क्या लेनदेन अभी भी हो रहा है, जबकि उत्पादन डेटाबेस पर इस फील्ड इंडेक्स को बनाने में कोई खतरा (डेटा भ्रष्टाचार, अतिरिक्त प्रतीक्षा समय इत्यादि) है? मैं एक समय चुन सकता हूं जब लेनदेन 30 स्टेशनों के माध्यम से काफी शांत हो।

क्या कोई छुपा खतरे है जिसे मैं नहीं देख रहा हूं? (मैं डीबी बहाल कुछ गलत हो जाता है, तो के लिए आगे नहीं देख रहा हूँ। यह डेटा के 10 वर्षों के साथ बहुत समय ले जाएगा।)

उत्तर

2

डाटा भ्रष्टाचार एक मुद्दा नहीं होना चाहिए, लेकिन अगर आप एक सूचकांक जोड़ने की कोशिश एक लाइव उत्पादन तालिका में आपको समस्याओं का सामना करने की संभावना है क्योंकि तालिका इंडेक्स निर्माण के दौरान प्रश्नों के प्रति उत्तरदायी नहीं होगी। एक इंडेक्स बनाना एक पूर्ण टेबल लॉक लागू होने तक लागू होगा, और यह जो समय लेता है वह कई कारकों (विशेष रूप से पंक्तियों की संख्या) पर निर्भर करेगा।

शेड्यूल किए गए डाउनटाइम दृढ़ता में प्राप्त करने के लिए एक अच्छी आदत की सिफारिश की है और यह भी किया गया है। और स्पष्ट रूप से बैकअप लिया गया है, और यदि आप इरादा कर रहे हैं तो उसे पूर्ववत करना होगा।

+0

धन्यवाद, मुझे यकीन नहीं था कि इंडेक्स बनाते समय लेनदेन कैसे व्यवहार करेंगे; अनन्य ताला मुझे बताता है कि मुझे क्या पता होना चाहिए। मैं कार्यान्वयन के लिए कुछ डाउनटाइम शेड्यूल करूँगा (पिछले व्यवस्थापक जो व्यापार के घंटों के दौरान फ्लाई पर बदलाव करने के लिए उपयोग किए जाते थे, परीक्षण के बिना बहुत समय। यह राक्षस जंजीर पाने के लिए एक लंबी सड़क होगी)। – MoSlo

संबंधित मुद्दे

 संबंधित मुद्दे