मेरे पास एक दिलचस्प अंतर है। मेरे पास एक बहुत ही महंगी क्वेरी है जिसमें कई पूर्ण टेबल स्कैन और महंगे जुड़ने के साथ-साथ स्केलर यूडीएफ को कॉल करना शामिल है जो कुछ भू-स्थानिक डेटा की गणना करता है।SQLServer में कैश तालिका का उपयोग करके, क्या मैं पागल हूं?
अंतिम परिणाम एक परिणाम है जिसमें उपयोगकर्ता को प्रस्तुत किया गया डेटा होता है। हालांकि, मैं सबकुछ वापस नहीं कर सकता जिसे मैं उपयोगकर्ता को एक कॉल में दिखाना चाहता हूं, क्योंकि मैं मूल परिणाम को पृष्ठों में विभाजित करता हूं और केवल एक निर्दिष्ट पृष्ठ लौटाता हूं, और मुझे मूल संपूर्ण डेटासेट लेने की आवश्यकता होती है, और समूह द्वारा लागू होता है और जुड़ता है संबंधित कुल डेटा की गणना करने के लिए आदि।
लंबी कहानी छोटी, मुझे यूआई को आवश्यक सभी डेटा को बांधने के लिए, इस महंगी क्वेरी को लगभग 5-6 बार बुलाया जाना चाहिए।
तो, मैंने इस बारे में सोचना शुरू किया कि मैं एक बार इस महंगी क्वेरी की गणना कैसे कर सकता हूं, और फिर प्रत्येक बाद की कॉल कैश किए गए परिणाम सेट के खिलाफ किसी भी तरह खींच सकती है।
मैंने क्वेरी को संग्रहीत प्रक्रिया में सारणीबद्ध करने के विचार पर हिट किया जो कैशिड (ग्विड) को एक शून्य पैरामीटर के रूप में ले जाएगा।
यह स्पोक कैश आईडी का उपयोग करके कैश तालिका में परिणामों को विशिष्ट रूप से पहचानने के लिए परिणाम देगा।
यह स्पॉक्स को अनुमति देता है जिसे पिछले परिणाम से कैशआईड में पास करने के लिए इस परिणाम पर काम करने की आवश्यकता होती है और डेटा को पुनर्प्राप्त करने के लिए यह एक सरल चयन कथन है (कैशआईड पर एक WHERE क्लॉज के साथ)।
फिर, एक आवधिक SQL नौकरी का उपयोग करके, कैश तालिका को फ़्लश करें।
यह बहुत अच्छा काम करता है, और वास्तव में शून्य लोड परीक्षण पर चीजों को गति देता है। हालांकि, मुझे चिंता है कि इस तकनीक में कैश टेबल के खिलाफ बड़ी मात्रा में पढ़ने और लिखने के साथ लोड के तहत समस्या हो सकती है।
तो, लंबी कहानी छोटी, क्या मैं पागल हूँ? या यह एक अच्छा विचार है।
जाहिर है मुझे लॉक विवाद, और सूचकांक विखंडन के बारे में चिंतित होने की आवश्यकता है, लेकिन किसी और चीज के बारे में चिंतित होना चाहिए?
फिर मुझे ऐप पर हजारों परिणाम पाइप करना होगा? – FlySwat
विस्तृत करने के लिए, मैं इस डेटा पर बहुत से SQL संचालन करता हूं, और केवल ऐप को परिणाम भेजता हूं। तो ऐप में कैशिंग प्रतिकूल होगा। – FlySwat
@FlySwat, मुझे लगता है कि इसके लिए मध्यस्थता शुरू करने पर विचार करने लायक हो सकता है, जब भी आप लंबी दौड़ वाली रिपोर्ट निष्पादित करते हैं, तो आप अपनी डीबी को फिट में नहीं भेजना चाहते हैं, मध्य में सेवा करने से आपको क्षमता मिल जाएगी थ्रॉटल और डीबी –