हमारे डेटाबेस आर्किटेक्चर में दो SQL सर्वर 2005 सर्वर होते हैं जिनमें प्रत्येक डेटाबेस संरचना का उदाहरण होता है: सभी पढ़ने के लिए, और सभी लिखने के लिए एक। हम रीडिंग डेटाबेस को अद्यतित रखने के लिए लेनदेन संबंधी प्रतिकृति का उपयोग करते हैं।लेनदेन संबंधी प्रतिकृति के साथ उप-1-सेकंड विलंबता प्राप्त करना संभव है?
दो सर्वर वास्तव में बहुत उच्च-स्पीक हैं (लिखने वाले सर्वर में 32 जीबी रैम है), और एक फाइबर नेटवर्क के माध्यम से जुड़े हुए हैं।
इस आर्किटेक्चर पर निर्णय लेने पर हमें विश्वास था कि पढ़ने के लिए डेटा को दोहराने के लिए विलंबता कुछ मिलीसेकंड (लोड के आधार पर, स्पष्ट रूप से) के क्रम में होगी। अभ्यास में हम मामलों के सबसे सरलतम में लगभग 2-5 सेकंड की विलंबता देख रहे हैं, जो असंतोषजनक है। सबसे सरल मामले से, मेरा मतलब है कि एक ही पंक्ति में एकल पंक्ति में एक ही पंक्ति में एक डीबी लिखना और पढ़ने के डेटाबेस में नए मान को देखने में कितना समय लगता है।
1 सेकंड से नीचे विलंबता प्राप्त करने के लिए हमें किन कारकों को देखना चाहिए? क्या यह भी प्राप्त करने योग्य है?
वैकल्पिक रूप से, क्या प्रतिकृति का एक अलग तरीका है जिसे हमें विचार करना चाहिए? डेटा और लॉग फ़ाइलों के स्थानों के लिए सबसे अच्छा अभ्यास क्या है?
संपादित
सलाह और अंतर्दृष्टि के लिए सभी को धन्यवाद - मुझे विश्वास है कि विलंबता अवधि हम का सामना कर रहे हैं सामान्य; हम हमारी डीबी होस्टिंग कंपनी द्वारा गलत तरीके से नेतृत्व कर रहे थे कि किस विलंबता की अपेक्षा की जा सकती है!
हम तकनीक (शीर्षक "स्केलिंग डेटाबेस" के अंतर्गत) this MSDN article के तल के पास वर्णित का उपयोग कर रहे हैं, और हम इस चेतावनी के साथ ठीक से निपटने में विफल रहा है था:
इस तरह के विशेष बनाने के परिणाम डेटाबेस विलंबता है: अब एक पाठक को पाठक डेटाबेस में वितरित करने में समय लगेगा। लेकिन अगर आप विलंबता से निपट सकते हैं, तो स्केलिंग क्षमता बहुत बड़ी है।
अब हम अपने कैशिंग तंत्र में बदलाव को लागू करने की सोच रहे हैं जो डेटा के किसी आइटम को "अस्थिर" माना जाता है जब लेखन डेटाबेस से पढ़ता है।
हाँ, मैं भी उस लेख को पढ़ूंगा :( –