मेरे पास एक SQL सर्वर 2005 डेटाबेस में एक तालिका है जिसका उपयोग बहुत अधिक किया जाता है। यह हमारे उत्पाद हाथ उपलब्धता की जानकारी पर है। हमें अपने गोदाम से हर घंटे अपडेट मिलते हैं और पिछले कुछ सालों से हम एक दिनचर्या चला रहे हैं जो तालिका को छोटा करता है और जानकारी अपडेट करता है। इसमें केवल कुछ सेकंड लगते हैं और अब तक कोई समस्या नहीं हुई है। हमारे पास हमारे सिस्टम का उपयोग करने वाले बहुत से लोग हैं जो अब इस जानकारी से पूछताछ करते हैं, और नतीजतन हम अवरुद्ध प्रक्रियाओं के कारण बहुत सारे टाइमआउट देख रहे हैं।टेबल को लॉक किए बिना उपयोग में होने पर तालिका में डेटा अपडेट करने का सबसे अच्छा तरीका क्या है?
... इसलिए ...
हम अपने विकल्पों पर शोध किया और समस्या को कम करने के लिए एक विचार के साथ आए हैं।
- हम दो तालिकाओं के लिए होगा। तालिका ए (सक्रिय) और तालिका बी (निष्क्रिय)।
- हम एक दृश्य तैयार करेंगे जो सक्रिय तालिका (तालिका ए) को इंगित करता है।
- इस टेबल की जानकारी (4 ऑब्जेक्ट्स) की सभी चीजों को अब दृश्य के माध्यम से जाना होगा।
- प्रति घंटा दिनचर्या निष्क्रिय तालिका को छोटा कर देगा, इसे नवीनतम जानकारी के साथ अद्यतन करें, फिर निष्क्रिय तालिका पर इंगित करने के लिए दृश्य को अपडेट करें, इसे सक्रिय बनाएं।
- यह दिनचर्या निर्धारित करेगा कि कौन सी तालिका सक्रिय है और मूल रूप से उनके बीच दृश्य को स्विच करें।
इसमें क्या गलत है? दृश्य मध्य क्वेरी को समस्याएं बदलना समस्याएं पैदा करेगा? क्या यह काम कर सकता है?
आपकी विशेषज्ञता के लिए धन्यवाद।
अतिरिक्त सूचना
दिनचर्या एक SSIS पैकेज कई कदम peforms है और अंत में/प्रश्न में तालिका अद्यतन करता ट्रंकेटस
अवरुद्ध प्रक्रियाओं दो अन्य संग्रहित प्रक्रियाओं है कि इस क्वेरी हैं तालिका।
अगर आप लाइसेंस है, दो अलग-अलग भार संतुलित सर्वर एक सहज विकल्प प्रदान कर सकता है। आप एक रहते हैं और दूसरे को अपडेट करते हैं और फिर स्विच करते हैं। –