SQL सर्वर अधिक सर्वर मेमोरी का उपभोग क्यों कर रहा है?


36

SQL सर्वर मेरे सर्वर RAM का 87.5% उपभोग कर रहा है। इसने हाल ही में धीमेपन जैसे कई प्रदर्शन बाधाओं का कारण बना। मैंने इस मुद्दे पर शोध किया। एक सामान्य समाधान जो मैं इंटरनेट पर पा सकता था, वह SQL सर्वर के लिए अधिकतम सीमा निर्धारित करना है। यह किया गया था और बहुत सुधार प्राप्त हुआ है। मैं जानना चाहता हूं कि यदि SQL सर्वर संसाधनों का उपभोग करता रहता है तो अधिकतम मेमोरी मान क्यों सेट नहीं किया जाता है


3
आपने कैसे निर्धारित किया है कि SQL सर्वर का RAM का उपयोग किसी भी अड़चन का स्रोत है? किस चीज में सुस्ती? यदि कुछ भी हो, तो SQL सर्वर अधिक कुशल होना चाहिए यदि यह यथासंभव RAM का उपयोग करता है (या इससे भी अधिक आप अपेक्षा करते हैं या इसे चाहते हैं)। और यदि आपके पास सर्वर पर अन्य एप्लिकेशन हैं जो पीड़ित हैं क्योंकि SQL सर्वर मेमोरी का उपयोग कर रहा है (जैसा कि यह करने के लिए डिज़ाइन किया गया है), उन्हें दूसरे सर्वर पर ले जाएं
हारून बर्ट्रेंड

मैंने यहां विधि का उपयोग किया है lucidica.com/help/got-sql-eating-up-ram मुझे पता है कि अगर मदद की :) :) का संबंध है, निकिता।
निकिता कोसोवोव

जवाबों:


48

SQL सर्वर जितनी मेमोरी की खपत करेगा उतनी ही आप इसकी अनुमति देंगे । डिफ़ॉल्ट रूप से, वह संख्या आपकी मशीन पर आपकी संख्यात्मक स्मृति का 100% शामिल करेगी। इसलिए आप वही देख रहे हैं जो आप देख रहे हैं। यदि आप SQL सर्वर को 24 GB मेमोरी देते हैं, तो SQL सर्वर 24 जीबी मेमोरी का उपयोग करने की पूरी कोशिश करेगा। फिर आपके पास SQL ​​सर्वर और संसाधनों के लिए जूझ रहे OS हैं, और यह हमेशा खराब प्रदर्शन का परिणाम होगा।

जब आप max server memoryकॉन्फ़िगरेशन सीमा सेट करते हैं, तो आप सीमित कर रहे हैं कि बफर पूल के लिए SQL सर्वर कितना आवंटित कर सकता है (वस्तुतः यह डेटा पृष्ठों और प्रक्रिया कैश को संग्रहीत करता है)। SQL सर्वर के भीतर अन्य मेमोरी क्लर्क हैं, इसलिए आपके विशेष संस्करण (2008 R2 और नीचे) के लिए, max server memoryबस बफर पूल को नियंत्रित करता है। लेकिन यह हमेशा सबसे बड़ा मेमोरी उपभोक्ता होने वाला है।

न्यूनतम और अधिकतम सर्वर मेमोरी के प्रभावों पर TechNet संदर्भ

न्यूनतम सर्वर स्मृति और अधिकतम सर्वर मेमोरी कॉन्फ़िगरेशन विकल्प Microsoft SQL Server डेटाबेस इंजिन के बफ़र पूल द्वारा उपयोग की जाने वाली मेमोरी की मात्रा के लिए ऊपरी और निचली सीमाएं स्थापित करते हैं।

जहां तक ​​सवाल है कि मुझे ओएस के लिए कितनी मेमोरी छोड़नी चाहिए , यह एक सामान्य रूप से बहस का मीट्रिक है। यह वास्तव में सभी निर्भर करता है, ज्यादातर क्या अन्य प्रक्रियाएं सर्वर पर चल रही हैं । बशर्ते कि यह वास्तव में समर्पित सर्वर हो (और यह लगभग कभी नहीं होता है)। मैं ओएस के लिए कम से कम 4 जीबी मेमोरी देखना पसंद करता हूं (और बड़े-हार्डवेयर बॉक्स पर भी)। लेकिन सबसे महत्वपूर्ण बात, मॉनिटर करें कि कितनी अप्रयुक्त मेमोरी है। उदार बनें और SQL सर्वर को अधिक मेमोरी दें यदि आप बहुत सारे उपलब्ध हैं (परफॉमन के माध्यम से निगरानी की जा सकती है) और अप्रयुक्त मेमोरी (निश्चित रूप से, हमेशा उन कोने की स्थितियों के लिए एक छोटा बफर छोड़कर)।


11

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

आम तौर पर मैं लोगों को विंडोज के लिए लगभग 4 गीगा रैम छोड़ने की सलाह देता हूं, लेकिन यह वास्तव में सर्वर पर चल रहे सॉफ्टवेयर की मात्रा पर निर्भर करता है कि आप किस SQL ​​सर्वर का उपयोग कर रहे हैं (सभी घटक उस सेटिंग का पालन नहीं करते हैं), आदि।


6

SQL पुनरारंभ की आवश्यकता के बिना यह तुरंत काम करता है:

सर्वर मेमोरी सर्वर कॉन्फ़िगरेशन विकल्प

SQL सर्वर आवृत्ति के लिए SQL सर्वर स्मृति प्रबंधक द्वारा प्रबंधित स्मृति (मेगाबाइट में) की मात्रा को पुन: कॉन्फ़िगर करने के लिए दो सर्वर मेमोरी विकल्प, मिन सर्वर मेमोरी और अधिकतम सर्वर मेमोरी का उपयोग करें । डिफ़ॉल्ट रूप से, SQL सर्वर उपलब्ध सिस्टम संसाधनों के आधार पर अपनी मेमोरी आवश्यकताओं को गतिशील रूप से बदल सकता है।

स्मृति की निश्चित मात्रा को कॉन्फ़िगर करने की प्रक्रिया

  1. ऑब्जेक्ट एक्सप्लोरर में, सर्वर पर राइट-क्लिक करें और गुण चुनें।
  2. मेमोरी नोड पर क्लिक करें।
  3. सर्वर मेमोरी विकल्प के तहत, वह राशि डालें जो आप न्यूनतम सर्वर मेमोरी और अधिकतम सर्वर मेमोरी के लिए चाहते हैं।

SQL सर्वर को अपनी स्मृति आवश्यकताओं को गतिशील रूप से उपलब्ध सिस्टम संसाधनों के आधार पर बदलने की अनुमति देने के लिए डिफ़ॉल्ट सेटिंग्स का उपयोग करें। न्यूनतम सर्वर स्मृति के लिए डिफ़ॉल्ट सेटिंग 0 है, और अधिकतम सर्वर मेमोरी के लिए डिफ़ॉल्ट सेटिंग 2147483647 मेगाबाइट (एमबी) है।

आशा है कि ये आपकी मदद करेगा!


3

जैसा कि एरिक ने कहा, आपको अन्य प्रक्रियाओं के लिए खाली स्थान रखने के लिए मेमोरी का प्रबंधन करना होगा। एक सामान्य स्पष्टीकरण और अधिकतम स्मृति को कैसे निर्धारित किया जाए, इस पर कुछ मार्गदर्शन के लिए, जोनाथन केहियास द्वारा पोस्ट की जाँच करें:

http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/

आप अपने सर्वर के उपयोग को ध्यान में रखते हुए सिफारिश को संशोधित कर सकते हैं।


1

SQL सर्वर उपलब्ध RAM का उपयोग करेगा जब तक कि आप उपयोग पर कैप नहीं लगाते। एक नियम के रूप में, मैं ओएस के लिए 2 जीबी से कम नहीं छोड़ने का प्रयास करता हूं, अर्थात यदि आपके पास होस्ट में 64 जीबी भौतिक रैम है, तो SQL सर्वर @ 62 जीबी कैप करें।

http://msdn.microsoft.com/en-us/library/ms191144(v=sql.105).aspx

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