SQL सर्वर मेमोरी कैसे मुक्त करें?


9

मेरे स्थानीय कंप्यूटर पर SQL सर्वर सैंडबॉक्स इंस्टालेशन है। मैंने स्मृति SQL सर्वर आवृत्ति 1000 mb के लिए उपयोग कर सकते हैं निर्धारित किया है। एक गहन ऑपरेशन चलाते समय, मेमोरी का उपयोग 1000 एमबी तक बढ़ जाता है। जब ऑपरेशन खत्म हो जाता है, तो SQL सर्वर अभी भी मेमोरी को होल्ड कर रहा है। इस स्मृति आरक्षण को कैसे मुक्त करें?


2
आपकी min server memoryऔर max server memory सेटिंग्स क्या हैं ? एक बार SQL सर्वर आपके द्वारा निर्दिष्ट न्यूनतम जमा कर लेता है, तो यह कभी भी जारी नहीं करेगा जब तक कि आप सेटिंग में बदलाव नहीं करते या उदाहरण को उछाल नहीं देते। जैसा कि जेम्स ने कहा है, यदि यह आपके द्वारा निर्दिष्ट न्यूनतम से अधिक है, तो इसे सिद्धांत रूप में जारी करना चाहिए जब इसे इसकी आवश्यकता नहीं होती है और मशीन पर मेमोरी दबाव होता है।
निक चामास

@ निक: मिनट सर्वर मेमोरी: 0 (एमबी); अधिकतम सर्वर मेमोरी: 600 (एमबी)।
13

जवाबों:


13

सेवा को रोकें / शुरू करें, कुछ और नहीं स्मृति को वापस ओएस पर छोड़ देंगे।

जाहिर है कुछ ऐसा नहीं है जिसे आप कभी ऑपरेशनल सर्वर से करना चाहते हैं लेकिन स्थानीय सैंडबॉक्स के लिए पूरी तरह से उचित है। मेरे लैपटॉप पर 3 अलग-अलग उदाहरणों के साथ, इसका एकमात्र व्यवहार्य तरीका है।

@ निक की टिप्पणी के बाद संपादित करें।

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

"आपकी ज़रूरत नहीं है" की आपकी परिभाषा क्या है? एक बार बफ़र पूल भर जाने के बाद, यह तब तक पृष्ठों को छोड़ने नहीं जा रहा है, जब तक कि वे अन्य पेजों के द्वारा विघटित नहीं हो जाते। /शुरू।


2
प्रति Microsoft : "विंडोज सर्वर 2003 के तहत, SQL सर्वर मेमोरी नोटिफिकेशन एपीआई का उपयोग यह QueryMemoryResourceNotificationनिर्धारित करने के लिए करता है कि बफर पूल मेमोरी आवंटित कर सकता है और मेमोरी जारी कर सकता है।" इसलिए यदि आप सिर्फ अन्य ऐप को भूखा रखने के बारे में चिंतित हैं, जिन्हें मेमोरी की अधिक आवश्यकता हो सकती है, तो सिद्धांत रूप में SQL सर्वर मेमोरी को रिलीज़ करेगा जब विंडोज को यह बताता है कि इसकी आवश्यकता नहीं है। उदाहरण को पुनरारंभ करके आपको केवल रिलीज़ को बाध्य करने का एकमात्र कारण होना चाहिए, यदि यह तंत्र डिज़ाइन के अनुसार काम नहीं कर रहा है या आपकी न्यूनतम / अधिकतम मेमोरी सेटिंग्स गलत है।
निक चामास

इस msdn.microsoft.com/en-us/library/ms178145.aspx पर स्पष्ट करने के लिए एक और उपयोगी msdn लेख । जब तक एसक्यूएल सर्वर तक पहुँच जाता है, तब तक यह मिनिमम सर्वर मेमोरी सेट करता है, यह ओएस से कम मेमोरी नोटिफिकेशन के जवाब में मेमोरी जारी करेगा। हालांकि ऐसा होने के लिए मेरे अनुभव में यह काफी चरम पर है।
जार्जबॉक

सटीक रूप से @georgeb_dba, यह आसानी से इसे नहीं देगा। एर्गो, बंद करो / शुरू करो और तुरंत अपने लैपटॉप को सीमित मेमोरी वापस पाओ।
मार्क स्टोरी-स्मिथ

4
DBCC FREESYSTEMCACHE ('ALL') 
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE 

पूल को मुक्त करेगा।

https://msdn.microsoft.com/en-us/library/ms178529.aspx

टिप्पणियों

DBCC FREESYSTEMCACHE निष्पादित करने पर SQL सर्वर के उदाहरण के लिए योजना कैश को साफ़ करता है। योजना कैश को साफ़ करने से बाद की सभी निष्पादन योजनाओं का पुनर्मूल्यांकन होता है और क्वेरी प्रदर्शन में अचानक, अस्थायी कमी हो सकती है। योजना कैश में प्रत्येक क्लीयर कैचस्टोर के लिए, SQL सर्वर त्रुटि लॉग में निम्न सूचना संदेश होगा: "SQL सर्वर ने% d 'कैचेस्टर (प्लान कैश का हिस्सा) के लिए कैशस्टोर फ्लश के% d घटना (s) का सामना किया है। 'DBCC FREEPROCCACHE' या 'DBCC FREESYSTEMCACHE' संचालन। " यह संदेश हर पांच मिनट में लॉग किया जाता है जब तक कि कैश उस समय अंतराल के भीतर फ्लश नहीं हो जाता है।


1
बहुत यकीन है कि यह वास्तव में स्मृति की मात्रा को कम नहीं करेगा जिसे एसक्यूएल ने ओएस स्तर पर आरक्षित किया है
ग्रेग

3

यह स्‍मृति को स्‍वचालित रूप से उपयोग नहीं कर रहा है, क्‍योंकि अन्‍य ऐप्स इसे करने का प्रयास करते हैं।

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