SQL सर्वर में अधिकतम मेमोरी सेटिंग


11

मैं SQL Server 2008 और एक वेब आधारित अनुप्रयोग, एकल समर्पित सर्वर पर, केवल 2 जीबी मेमोरी के साथ उपलब्ध कर रहा हूं।

जैसा कि कहीं और उल्लेख किया गया है, SQL सर्वर नियमित रूप से 98% तक भौतिक मेमोरी लेता है, जो सर्वर पर चल रहे वेब एप्लिकेशन को धीमा करता है।

SSMS में सर्वर प्रॉपर्टीज में, मेमोरी के तहत, अधिकतम सर्वर मेमोरी (एमबी में): 2147483647 पर सेट है एस क्यू एल सर्वर

मेरा प्रश्न यह है कि मेरे द्वारा उपलब्ध स्मृति की मात्रा को देखते हुए अधिकतम सर्वर मेमोरी बॉक्स में डालने के लिए अनुशंसित संख्या क्या होगी और वही सर्वर वेब एप्लिकेशन भी चला रहा है?

इसके अतिरिक्त, SQL सर्वर चल रहा है, तो क्या इस नंबर में बदलाव करना सुरक्षित है?

आपकी सलाह के लिए धन्यवाद।


2
एक हालिया लेख मैंने SQL सर्वर पर मेमोरी ओवर-कमिट के बारे में लिखा था जो आपके पढ़ने के लिए उपयोगी हो सकता है।
जॉन सेगेल

जवाबों:


13

मैं आखिरी प्रश्न का उत्तर पहले दूंगा: हां, आप इसे तब बदल सकते हैं जब सर्वर बिना किसी समस्या के चल रहा हो। यदि आप SQL के माध्यम से मान बदलना चाहते हैं, तो आप इसे निम्न क्वेरी से कर सकते हैं

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO

SQL सर्वर पर मेमोरी सेट करने के बारे में अधिक जानकारी के लिए यह पृष्ठ देखें ।


आपका पहला सवाल, दुर्भाग्य से इसका उत्तर है: मैं आपको बता नहीं सकता, मैं वहां नहीं हूं।

स्मृति आवंटित करते समय आपको 1,000,000 चीजों की आवश्यकता होती है। प्रश्नों से रिजल्ट सेट कितने बड़े हैं, वे कितनी बार चलते हैं, क्या एक क्वेरी जो 20 एमएस लेती थी वह अब 200 एमएस में लेना ठीक है?

एसक्यूएल की चूक यह मानती है कि यह सर्वर पर चलने वाली एकमात्र चीज है, इसलिए यह मैमोरी को MAX_VALUE पर सेट करता है और यह तब बढ़ता है जब सभी उपलब्ध मेमोरी उपयोग में होती है (और समर्पित हार्डवेयर पर जो आप चाहते हैं कि यह काफी करीब है) हारून एक संभावित चेतावनी के लिए टिप्पणी करते हैं))। आम तौर पर किसी भी वेब सर्वर या डेटाबेस के साथ बातचीत करने वाला अन्य सॉफ्टवेयर नेटवर्क पर अलग-अलग संचार करने वाले हार्डवेयर पर होगा।

आपको वास्तव में बस इसे एक मूल्य पर सेट करने की आवश्यकता है जो आपको लगता है कि समझदार है, और यदि आपका वेबसर्वर अभी भी मेमोरी कम है तो इसे कम कर दिया जाएगा। यदि आप वेबसर्वर को मेमोरी देने के बाद एसक्यूएल आपको पर्याप्त प्रदर्शन नहीं दे रहे हैं, तो इसके लिए आपको अधिक रैम खरीदने या SQL को समर्पित हार्डवेयर में ले जाने की आवश्यकता होगी।


2
SQL सर्वर मेमोरी के बारे में SSMS में अच्छी रिपोर्ट है: blogs.msdn.com/b/buckwoody/archive/2007/10/17/… ... आप ट्रैक कर सकते हैं कि कौन सा हिस्सा सबसे अधिक मेमोरी खाता है
DiGi

1

आपको कभी भी sql सर्वर को बॉक्स पर सभी मेमोरी लेने की अनुमति नहीं देनी चाहिए .. यह निर्भर करता है कि उस बॉक्स पर क्या चल रहा है और बॉक्स में कितनी मेमोरी है, लेकिन मैं हमेशा यह सुनिश्चित करता हूं कि मैं O के लिए 10% मेमोरी छोड़ दूं \ एस।


0

मेरी वर्तमान कंपनी में, जहाँ मुझे काम पर रखा जाता है, मैं हमेशा SQL सर्वर के लिए न्यूनतम और अधिकतम सेटिंग्स का उपयोग करता हूँ। अधिकतम, यदि सर्वर का उपयोग केवल SQL सर्वर के लिए किया जा रहा है, तो मैं हमेशा अधिकतम मेमोरी - ओएस के लिए 1 जीबी पर सेट करता हूं। 2GB पर हमारे मामले में न्यूनतम।

लेकिन यह हमारे प्रतिष्ठानों के लिए सिद्ध है। प्रत्येक स्थापना और उपयोग समान नहीं हैं, और मुझे अभी भी लगता है कि स्मृति हमेशा वह नहीं कर रही है जो आप चाहते हैं;)

आपके मामले में एक ज्ञात बात हो सकती है, लेकिन स्मृति की अदला-बदली को भी देखें। जब आपके पास सर्वर पर केवल 2GB होता है और आपके पास "उच्च लोड" पर चलने वाला OS और SQL सर्वर होता है, तो मेमोरी की खपत बहुत अधिक हो जाएगी जहां OS कुछ स्वैपिंग करने की प्रवृत्ति रखेगा। सुनिश्चित करें कि आपकी पेजिंग फ़ाइल ओएस ड्राइव पर नहीं है, या फिर आप पूरी तरह से जाम सिस्टम के साथ समाप्त हो सकते हैं (पहले भी ऐसा था और इसे पसंद नहीं किया गया था)


-1

मैंने मुद्दों के बिना लाइव सर्वर पर "अधिकतम सर्वर मेमोरी" को बदल दिया है। ऐसा लगता है कि यह सभी डेटाबेस पर डिफ़ॉल्ट रूप से 2147483647 के रूप में सेट किया गया है (लेकिन मुझे नहीं पता कि वास्तव में इसे बदलने से पहले SQL से मूल्य कैसे पढ़ें) ...


-2

99% मामलों में चूक के साथ रहना। यह स्मृति के गतिशील प्रबंधन की अनुमति देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.