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


18

मुझे इस पर आपका इनपुट अच्छा लगेगा। मेरे पास एक sql सर्वर 2008r2 Ent है। ईडी। 16 कोर और 64 जीबी रैम के साथ 64 बिट। 2018014 के रूप में पूरी तरह से पैच किए गए SQL सर्वर का एक उदाहरण है।

अधिकतम रैम 60000MB पर सेट है। मुफ्त राम की राशि कुछ दिनों के बाद ऑनलाइन कार्य प्रबंधक के अनुसार 0 है।

अगर मैं अधिकतम RAM को 53GB से नीचे बदलता हूं तो कुछ दिनों के बाद इसे स्थिर करने और कुछ मुफ्त में रैम मिलेगा।

यह sql प्रक्रिया है जो टास्क मैनेजर के अनुसार RAM को आवंटित करती है। मुझे इस बात की जानकारी कैसे है कि वास्तव में समस्या क्या है? यह कहे बिना जाता है कि मैंने पहले ही परीक्षण कर लिया था, लेकिन अभी तक इसे पसंद नहीं किया। और ओह जब हम उपलब्ध राम 0 से नीचे है, तो विशिष्ट मेमोरी भुखमरी की स्थिति नहीं होती है।

अपडेट 1:

इस पृष्ठ पर राम से संबंधित एक अन्य क्यू / ए से प्रेरित होकर /dba//a/7062/2744 । मैंने इन दोनों का उपयोग यह देखने के लिए किया कि रैम का उपयोग किस लिए किया जा रहा है।

SELECT TOP ( 10 )
        [type] AS [Memory Clerk Type] ,
        SUM(single_pages_kb) AS [SPA Mem, Kb]
FROM    sys.dm_os_memory_clerks
GROUP BY [type]
ORDER BY SUM(single_pages_kb) DESC
OPTION  ( RECOMPILE ) ;

SELECT  DB_NAME(database_id) AS [Database Name] ,
        COUNT(*) * 8 / 1024.0 AS [Cached Size (MB)]
FROM    sys.dm_os_buffer_descriptors
--WHERE   database_id > 4 -- system databases
--        AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC
OPTION  ( RECOMPILE ) ;

इनके द्वारा दर्शाई गई राशि पहले 7948432 Kb दूसरी 44030,57812 MB का चयन करती है जो कुल 52GB sql सर्वर द्वारा उपयोग किया जाता है ... तो मेरी RAM शेष कहाँ गई? :-) टास्क मैनेजर शो अभी 363 कैश हुआ है, उपलब्ध 401, फ्री 40 और sqlservr.exe में मेमोरी प्राइवेट सेट 64 459 656 है। मैक्स राम पहले की तरह 60000MB पर सेट है।

जवाबों:


20

SQL सर्वर अधिकतम मेमोरी सेटिंग केवल बफर पूल उपयोग के लिए सीमा को परिभाषित करता है। उस सीमा से अधिक और उससे अधिक परिवर्तनशील लेकिन महत्वपूर्ण आवंटन होंगे।

जोनाथन केहियास , क्रिश्चियन बोल्टन और जॉन सैमसन के विषय पर 300/400 पद हैं। ब्रेंट ओजर में एक आसान लेख है जिसे शुरू करने के लिए बेहतर जगह हो सकती है।

संबंधित: SQL सर्वर 2008 R2 "घोस्ट मेमोरी"


हां, मैं सहमत हूं कि यह केवल बफर पूल को सीमित करता है। बुकमार्क के लिए धन्यवाद, मैं उन पर गौर करूंगा।
मार्टिन सोजबर्ग

मैं उन लिंक पर पढ़ रहा हूं और वहां कुछ अच्छे सामान हैं। मुझे जो पता लगा है उससे मैं अपने सवाल को अपडेट करूंगा। मैं यह भी महसूस करता हूं कि मेरे पास मैक्स पिज़्ज़ेरिया का नंबर आसानी से उपलब्ध है ... मुझे आश्चर्य है कि क्या वे होमडेलीवरी करते हैं?
मार्टिन सोजबर्ग

16

जैसा कि कहा गया है कि बफ़र पूल और प्रक्रिया कैश केवल उन चीज़ों के बारे में हैं जो अधिकतम सर्वर मेमोरी द्वारा नियंत्रित होती हैं। SQL सर्वर के भीतर कई अन्य चीजें हैं जो उस सीमा से परे मेमोरी खा सकती हैं। वे शामिल हैं (लेकिन सीमित नहीं हैं):

  • डेटाबेस मेल
  • SQLCLR
  • विस्तारित प्रक्रियाएं
  • बायनेरिज़ उन्हें खुद
  • एसक्यूएल मेल
  • लघु उद्योगों
  • SSAS
  • SSRS

उपर्युक्त में से, हम इस सर्वर पर बायनेरीस और एससीएस के बायनेरिज़ का उपयोग करते हैं।
मार्टिन Sjöberg 13

1
सर्वर पर कौन सा अन्य सॉफ़्टवेयर स्थापित है? और मेरा मतलब कुछ भी हो। MPIO ड्राइवर, फ्लैश ड्राइव ड्राइवर, बैकअप सॉफ्टवेयर, एंटी-वायरस, sys-internals, इत्यादि
mrdenny

सर्वर बहुत साफ है और नव स्थापित है, लेकिन हमारे पास कुछ है। मैं इस सप्ताह के अंत में पूरी सूची एक साथ लाने की कोशिश करूंगा। लघु और मेरी स्मृति से ... हमारे पास एक iodrive (dell), mcafee, डेस्कटॉप पर प्रोसेक्सप्लिफ़र, iometer, वृक्षों का आकार है ...
मार्टिन Sjöberg

1
फ्यूजनियो चालक को काम करने के लिए बहुत अधिक मेमोरी की आवश्यकता होती है। शायद यह बहुत कुछ ले रहा है।
मन्दिनी 19

क्या यह साबित करना संभव है? या कम रैम का उपयोग करने के लिए इसे कॉन्फ़िगर करने के लिए? सोफ़र ऐसा लगता है कि रैम को रिलीज़ करना तब है जब मैंने इसे किसी भी डाउनसाइड पर ध्यान नहीं दिया है, लेकिन सिर्फ यह मानने के लिए कि हमें उन एसएस पैकेजों की मात्रा बढ़ानी होगी जो मैं इस बात से चिंतित हूँ कि रैम उपयोग के साथ क्या हो सकता है।
मार्टिन सोजबर्ग

3

SQL 2012 से, single_pages_kb को उस DMV में pages_kb द्वारा बदल दिया गया। https://msdn.microsoft.com/en-us/library/ms175019.aspx?f=255&MSPPError=-2147217396

इसलिए यदि आप प्रश्न में शामिल क्वेरी को 2012+ सर्वर पर चलाना चाहते हैं, तो single_ string को हटा दें।


धन्यवाद। मैंने इसे page_size_in_bytes में बदल दिया, लेकिन यह वैसा नहीं था।
एलियास

2

http://msdn.microsoft.com/en-us/library/ms178067.aspx

अधिकतम सर्वर मेमोरी को कम करने के लिए आपको मेमोरी जारी करने के लिए SQL सर्वर को पुनरारंभ करना पड़ सकता है।

मेरी समझ यह है कि यदि बफ़र पूल में कोई पृष्ठ डिस्क पर नहीं लिखा गया है, तो यह तब तक जारी नहीं किया जाएगा जब तक यह है।

क्या अधिकतम मेमोरी सेटिंग कम होने से SQL सर्वर गंदे पेजों को फ्लश करता है?

वह सत्यापित करने के लिए बफर मैनेजर में बफर मॉनिटर कर सकता है। पल्मोन -> SQLServer: बफर मैनेजर: डेटाबेस पेज


SQL सर्वर को पुनरारंभ करने के लिए आपको "हो सकता है"। यह हमेशा की आवश्यकता नहीं है। क्या आप उन परिस्थितियों को जानते हैं जिनके तहत मेमोरी जारी करना या फिर मेमोरी जारी करने की आवश्यकता नहीं है?
निक चम्मास

मैं आपके मौजूदा उत्तर में इन विवरणों को संपादित करूंगा और इसे हटा दूंगा। शायद मर्दानी गंदे पन्नों को फ्लश करने के बारे में आपके सवाल का जवाब दे सकते हैं।
निक चामास 16

1
सही है, SQL एक मैमोरी पेज जारी नहीं कर सकता है जबकि यह गंदा है (इसे लिखा गया है)। हर बार सिस्टम चौकियां गंदे पृष्ठों को डिस्क पर लिखा जाता है। मुझे विश्वास नहीं है कि अधिकतम सर्वर मेमोरी बदलने से एक चेकपॉइंट होता है।
mrdenny

1
स्मृति सेटिंग्स को बदलने के लिए उदाहरण को पुनरारंभ करना एक बड़ी गलती हो सकती है। मेमोरी सेटिंग्स को बदलने के CHECKPOINTदौरान डेटाबेस पर एक ऑपरेशन का कारण नहीं बनता है , यह प्रक्रिया कैश को फ्लश करता है। यदि आप केवल मेमोरी सेटिंग्स बदलने के लिए इंस्टेंस को पुनरारंभ करते हैं, तो न केवल प्रक्रिया कैश ठंडा होगा, बल्कि डेटा कैश भी ठंडा होगा। यदि मेमोरी में गंदे पृष्ठों के कारण अधिकतम मेमोरी कम नहीं हो सकती है CHECKPOINT, तो गंदे पेजों को डिस्क में फ्लश करने के लिए डेटाबेस पर कमांड चलाएँ, फिर इंस्टेंस को पुनरारंभ किए बिना मेमोरी सेटिंग को ऑफ-पीक समय पर बदलें ।
जॉन सीगल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.