मेरे पास ASP.NET वेब साइट है जो डेटा की अपनी स्वतंत्र कैशिंग करती है और डेटा लंबे समय तक परिवर्तित नहीं होता है, इसलिए इसे SQL Server दूसरी बार उसी क्वेरी से क्वेरी करने की आवश्यकता नहीं है। मुझे पहली बार (कुंवारी) प्रश्नों के प्रदर्शन में सुधार करने की आवश्यकता है जो उस SQL सर्वर पर जाते हैं। कुछ क्वेरीज़ इतना डेटा प्रोसेस करती हैं कि वे SQL सर्वर का उपयोग कर सकते हैं tempdb
। मैं अस्थायी तालिका चर या अस्थायी तालिकाओं का उपयोग नहीं करता, इसलिए SQL सर्वर tempdb
जब भी आवश्यकता होती है, तब तक स्वयं इसका उपयोग करने का निर्णय लेता है।
मेरे db का आकार 16Gb है, मेरे पास अपने सर्वर मशीन पर 32Gb की भौतिक RAM उपलब्ध है।
मैं समझता हूं कि एमएस एसक्यूएल सर्वर कैशिंग रणनीति समान प्रश्नों के प्रदर्शन को गति देने के लिए रैम में डेटा रखने की कोशिश करती है अगर उन्हें फिर से लोड करने के लिए समान डेटा की आवश्यकता होती है। इसके अलावा यह डिस्क एक्सेस का कारण बनाए बिना स्पीड-अप प्रदर्शन के लिए अस्थायी रैम के बजाय उपलब्ध रैम का उपयोग करने की कोशिश करेगा।
मुझे लगता है कि जब क्वेरी कि tempdb SQL सर्वर में कुछ स्टोर करने की जरूरत है और पर्याप्त रैम उपलब्ध नहीं है, SQL सर्वर 2% उपलब्ध है:
1) कुछ कैश किए गए डेटा को अनलोड करने के लिए और डिस्क लिखने से बचने के लिए tempdb के बजाय स्प्रेड रैम का उपयोग करें
2) भविष्य के प्रश्नों के लिए कैश्ड डेटा रखें और tempdb का उपयोग करना शुरू करें, जो धीमी डिस्क को लिखता है।
मुझे नहीं पता कि एसक्यूएल सर्वर इस स्थिति में क्या विकल्प देगा, लेकिन मैं इसे # 1 पसंद करना चाहूंगा क्योंकि मैं केवल पहली बार (कुंवारी) प्रश्नों के प्रदर्शन के बारे में परवाह करता हूं, क्योंकि मैं एसक्यूएल सर्वर को फिर से एक ही क्वेरी नहीं भेजता। (हालांकि मैं इसी तरह का प्रश्न भेज सकता हूं)।
इस परिदृश्य के लिए SQL सर्वर कैशिंग रणनीति क्या है?
यह कुंवारी प्रश्नों से बचने के लिए और दूसरी बार के प्रश्नों की गति के बीच रैम के उपयोग को कैसे संतुलित करता है?
क्या SQL सर्वर को इस तरह से कॉन्फ़िगर करना संभव है कि वह # 1 विकल्प बना सके? यदि हाँ तो कैसे?
मैं सभी कुंवारी एसक्यूएल प्रश्नों का प्रदर्शन कैसे बढ़ा सकता हूं?
चूँकि मैं SQL Server कैशिंग रणनीति के बारे में नहीं जानता, इसलिए मैं RAM डिस्क पर डेटाबेस रखना चाहता हूँ। यह सुनिश्चित करेगा कि किसी भी कुंवारी क्वेरी में बिना डेटा के लोड होने की उच्च गति है, भले ही SQL सर्वर हमेशा # 1 विकल्प बनाता है। इसका जोखिम यह है कि एसक्यूएल सर्वर कम उपलब्ध रैम के साथ अधिक टीडीपीडीबी का उपयोग करना शुरू कर सकता है (केवल 16 जीबी के बाद मैं 16 जीबी का उपयोग रैम डिस्क के लिए करता हूं) यदि यह विकल्प # 2 बना रहा है, जो उन कुंवारी प्रश्नों को धीमा कर देगा जो स्पिल का कारण बनते हैं tempdb
।
मुझे SQL 2008 R2 के लिए समाधान में दिलचस्पी है, लेकिन मुझे लगता है कि यह संभवतः SQL 2008, SQL 2005 के लिए समान है और SQL 2000 हो सकता है।
स्पष्टीकरण:
उस बॉक्स पर कोई अन्य अनुप्रयोग नहीं चल रहा है, यह SQL सर्वर को समर्पित है । वेबसाइट अलग बॉक्स पर चलती है।
यह SQL Server 2008 R2 मानक संस्करण 64 बिट Windows Server 2008 R2 एंटरप्राइज़ 64 बिट पर है।
मैं केवल रीड-ओनली क्वेरीज़ चलाता हूं और डेटाबेस को केवल-पढ़ने के लिए सेट किया जाता है ।
मान लेते हैं कि पहले से ही अच्छे सूचकांक हैं । यह सवाल SQL सर्वर मेकिंग चॉइस # 1 बनाम चॉइस # 2 के बारे में है, यह इसे कैसे बनाता है, अगर इसे नियंत्रित करने का कोई तरीका है और यदि RAM डिस्क कुंवारी प्रश्नों के लिए सही विकल्प बनाने में मदद करती है।