sql server 2005 - Effectively transforming data from one SQL database to another in live environment -


हमारे पास एक गड़बड़ी डाटाबेस स्थिति है।

हमारा मुख्य बैक-ऑफिस सिस्टम स्थानीय डेटा के साथ दृश्य फॉक्स प्रो (हाँ, मुझे पता है!)

प्रभावी ढंग से हमारी वेबसाइटों में डेटा के साथ काम करने के लिए, हमने नियमित रूप से एक एसक्यूएल डाटाबेस में डेटा निर्यात करने का चयन किया है। हालांकि यह प्रक्रिया मूल रूप से तालिकाओं को हर बार साफ़ करती है और फिर से सम्मिलित करता है।

इसका मतलब है कि हमारे पास दो एसक्यूएल डेटाबेस हैं - एक यह है कि हमारी फॉक्सप्रो निर्यात प्रक्रिया लिखती है, और दूसरी है कि हमारी वेबसाइट्स पढ़ें से।

यह प्रश्न एक एसक्यूएल डाटाबेस से अन्य (SqlFoxProData -> SqlWebData) में परिवर्तन से संबंधित है।

किसी विशेष तालिका के लिए (हमारी मुख्य अनुप्रयोग तालिका में से एक), क्योंकि इस प्रक्रिया के दौरान विभिन्न डेटा परिवर्तनों को स्थान मिलता है, यह स्वयं जुड़ने का उपयोग करते हुए एक सीधा अद्यतन, INSERT और डिलीटे स्टेटमेंट नहीं है, लेकिन मुझे इसके बजाय कर्सर का उपयोग करना पड़ रहा है (मुझे पता है!)

यह काम कर रहा है कई महीनों के लिए ठीक है लेकिन अब जब हम एक अपडेट हो रहे हैं (यह दिन के दौरान नियमित रूप से हो सकता है) प्रदर्शन समस्याओं पर हमला शुरू कर रहे हैं

असल में हम SqlFoxProData.ImportantTable से SqlWebData.ImportantTable को अपडेट कर रहे हैं, तो यह लाइव वेबसाइट पर कभी-कभी कनेक्शन टाइमआउट / डेडलॉक / अन्य समस्याओं के कारण।

मैंने प्रश्नों को अनुकूलित करने, कैशिंग इत्यादि आदि पर कड़ी मेहनत की है, लेकिन यह एक बिंदु पर आ गया है जहां मैं डेटा को अपडेट करने के लिए एक और रणनीति की तलाश कर रहा हूं।

एक विचार जो मन में आया है महत्वपूर्ण टेबल (ए और बी) की दो प्रतियां, जिनमें से कुछ अवधारणा वर्तमान में 'सक्रिय' है, गैर-सक्रिय तालिका को अपडेट कर रहा है, फिर क्रेनली कार्यनीति तालिका को बदलना

यानी महत्वपूर्ण TableA से पढ़ें जब हम महत्वपूर्ण TableB अद्यतन कर रहे हैं, तो वेबसाइटों को हम महत्वपूर्ण TableB से पढ़ने के लिए स्विच करते हैं।

सवाल यह है, क्या यह व्यवहार्य और अच्छा विचार है? मैंने पहले ऐसा कुछ किया है, लेकिन मुझे यकीन नहीं है कि यह अनुकूलन / अनुक्रमण आदि के लिए जरूरी अच्छा है।

कोई भी सुझाव आपका स्वागत है, मुझे पता है यह एक गड़बड़ स्थिति है ... और दीर्घकालिक लक्ष्य होगा

(हम एसक्यूएल 2005 का प्रयोग कर रहे हैं यदि यह मदद करता है)

मुझे जोड़ना चाहिए कि डेटा स्थिरता उदाहरण में विशेष रूप से महत्वपूर्ण नहीं है, देखकर क्योंकि डेटा हमेशा थोड़ी सी पुरानी है

इस बिल्ली को त्वचा के कई तरीके हैं। < / P>

मैं लॉकिंग मुद्दों पर पहले से हमला करता हूं। यह अत्यंत दुर्लभ है कि मैं कर्सर का उपयोग करूँगा, और मुझे लगता है कि प्रदर्शन और लॉकिंग के व्यवहार में सुधार हो सकता है, जिससे आपके कई मुद्दों को हल हो सके।

मुझे उम्मीद है कि मैं इसे दो अलग स्टेजिंग टेबल एसक्यूएल में फॉक्सप्रो निर्यात के लिए एक और एक एसक्यूएल में फाइनल प्रारूप में परिवर्तित हुआ। फिर अंतिम रूप से उत्पादन के लिए फाइनल को स्वैपिंग करना, या अंतिम तालिका से उत्पादन के सभी बदलावों को लागू करने के लिए केवल 3 INSERT / UPDATE / DELETE लेनदेन का उपयोग करना किसी भी तरह से, वहाँ कुछ लॉकिंग होने जा रहा है, लेकिन हम किस बारे में बात कर रहे हैं?


Comments