न तो DBCC FREEPROCCACHE और न ही DBCC FREESYSTEMCACHE ('SQL प्लान') CACHESTORE_SQLCP स्मृति को मुक्त करने के लिए कुछ भी करते हैं


13

CACHESTORE_SQLCP Sql योजनाएँ कुछ दिनों के बाद 38 GB तक बढ़ जाती हैं।

हम पहले से ही "तदर्थ वर्कलोड के लिए अनुकूलन" विकल्प पर चल रहे हैं। (एंटिटी फ्रेमवर्क और कस्टम रिपोर्टिंग बहुत सारे विज्ञापन होक्स बनाता है!)

बहु-AZ मिररिंग के साथ AWS RDS पर SQL Server 2016 SE 3.00.2164.0.v1

जब मैं चलता हूं:

DBCC FREESYSTEMCACHE('SQL Plans');

या

DBCC FREEPROCCACHE

या

DBCC FREESYSTEMCACHE ('SQL Plans') WITH MARK_IN_USE_FOR_REMOVAL

या

DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;

यह स्पष्ट नहीं लगता है:

SELECT TOP 1 type, name, pages_kb FROM sys.dm_os_memory_clerks ORDER BY pages_kb  desc

type                name        pages_kb
CACHESTORE_SQLCP    SQL Plans   38321048

मैं क्वेरी स्टोर सक्षम के साथ चल रहा था, लेकिन मैंने इसे यह देखने के लिए अक्षम कर दिया कि क्या कुछ भी हस्तक्षेप कर रहा है, यह मदद करने के लिए नहीं लगता था, लेकिन मैंने इसे छोड़ दिया।

क्या सच में अजीब भी है

SELECT COUNT(*) FROM sys.dm_exec_cached_plans

1-3 या तो (यह केवल वर्तमान में चल रहे प्रश्नों को दिखाने के लिए लगता है), भले ही मैं कुछ भी साफ़ करने का प्रयास करने से पहले ही वह सभी मेमोरी आरक्षित हो। मुझे किसकी याद आ रही है?

CACHESTORE_SQLCP सभी उपलब्ध मेमोरी का 60% से अधिक ले रहा है, जो एक चिंता का विषय है क्योंकि कभी-कभी मेमोरी वेट हो रहे हैं। इसके अलावा, हमें सप्ताहांत पर एक नियमित DBCC CHECKDB को मारना था जो 4 घंटे तक चल रहा था क्योंकि अपर्याप्त मेमोरी इंतजार कर रही थी (यह PHYSICAL_ONLY पर कोई त्रुटियों के साथ तुरंत पूरा हुआ)।

क्या इस मेमोरी को पुनः प्राप्त करने का कोई तरीका है (रात में रिबूट के अलावा?)!

मेमोरी खपत ग्राफ मेमोरी खपत चार्ट

टिप्पणियों / उत्तरों से अपडेट करें

जब मैं दौड़ता हूं

SELECT * FROM sys.fn_my_permissions(NULL,NULL)

मुझे मिला

entity_name subentity_name  permission_name
server      CONNECT SQL
server      CREATE ANY DATABASE
server      ALTER ANY LOGIN
server      ALTER ANY LINKED SERVER
server      ALTER ANY CONNECTION
server      ALTER TRACE
server      VIEW ANY DATABASE
server      VIEW ANY DEFINITION
server      VIEW SERVER STATE
server      ALTER SERVER STATE
server      CREATE SERVER ROLE
server      ALTER ANY SERVER ROLE

जिसमें आवश्यक ALTER SERVER STATEअनुमति शामिल है।

का आउटपुट DBCC FREEPROCCACHEहै

DBCC निष्पादन पूरा। यदि डीबीसीसी ने त्रुटि का संदेश मुद्रित किया हैं, तो अपने सिस्टम व्यवस्थापक से संपर्क करें।

जो मानक संदेश है। अन्य DBCC फ़ंक्शंस जो RDS अनुमतियों के बारे में त्रुटि संदेश देने का समर्थन नहीं करते हैं।

(एक दिन बाद और फिर से चलने के बाद, SQL प्लान अभी भी 38,321,280 kb है)

टिप्पणियों / उत्तरों से अपडेट करें

SELECT pool_id, name, cache_memory_kb, compile_memory_kb FROM sys.dm_resource_governor_resource_pools

आउटपुट:

pool_id name    cache_memory_kb  compile_memory_kb
1   internal    38368408         1168080

DBCC FREEPROCCACHE ('internal') कुछ अलग नहीं करता

अपडेट करें

SQL त्रुटि लॉग हर बार निम्न लॉग करता है:

2017-10-19 14:26:47.22 spid85 SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'Object Plans' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.

2017-10-19 14:26:47.22 spid85 SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'SQL Plans' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.

2017-10-19 14:26:47.22 spid85 SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'Bound Trees' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.

अपडेट करें

RDS पर 13.00.2164.0.v1 से 13.00.4422.0.v1 पर एक इंजन संस्करण अपग्रेड उपलब्ध है। हालाँकि यह ऑटो-माइनर-वर्जन अपग्रेड पर सेट है, लेकिन यह हमें नवीनतम के लिए अपडेट रखने के लिए नहीं लगता है। रिबूट और स्थापित करेगा कि इस सप्ताह के अंत में देखने के लिए कि क्या यह मदद करता है।

जवाबों:


5

मैंने 13.00.4422.0.v1 (SQL Server 2016 SP1) में अपग्रेड किया और पुनः आरंभ किया।

अब तक, मैं DBCC FREESYSTEMCACHE('SQL Plans');कमांड का उपयोग करके SQL योजना मेमोरी को खाली करने में सक्षम हूं !

समय यह देखने के लिए बताएगा कि क्या यह मेमोरी को थोड़ा समझदार उपयोग करता है, लेकिन कम से कम अब मेरे पास इसे रीसेट करने का एक तरीका है यदि इसकी फिर से ब्लोटिंग हो जाती है।


1
फिर भी मैं बार-बार SQLCP साफ़ नहीं करने और आगे बढ़ने और मूल कारण का पता लगाने का सुझाव दूंगा
Shanky

एंटिटी फ्रेमवर्क और एक कस्टम रिपोर्टिंग सुविधा जो किसी भी उपयोगकर्ता को लगभग किसी भी क्वेरी को चलाने देती है, एक तरह से, बहुत सारे एडहॉक प्रश्न बनाती है। यदि उन लोगों को बस शुद्ध करने का एक तरीका था, या यहां तक ​​कि उन्हें पहले स्थान पर कभी भी कैश न करने के लिए कहें, तो यह मदद कर सकता है। SP1 स्थापित होने के बाद से अब तक, योजना कैश लगभग 5.8GB पर मँडरा गया है।
प्रोफेशनल साउंडिंग नेम

क्या आपने सक्षम किया है Optimize for Ad-Hoc Workload? 38G की तुलना में अगर यह अब 5 जीआई ले रहा है, तो विश्वास करें कि यह कार्यभार पर विचार करने के लिए चिंता करने की कोई बात नहीं होगी
शंकी

हां, एड-हॉक वर्कलोड के लिए ऑप्टिमाइज़ सेट किया गया है (जैसा कि ऊपर प्रश्न में कहा गया है)
व्यावसायिक ध्वनि नाम

1
हमने इसी मुद्दे को 13.0.4001.0 पर देखा। खरीद कैश को साफ़ करने के लिए SQL को उछाल देना था। कुछ भी संकलित नहीं किया जा रहा था, लेकिन खरीद कैश 'अटक गया' था और यह स्पष्ट नहीं करेगा कि हमने क्या प्रयास किया। एसक्यूएल को उछालने के बाद से इसे दोबारा नहीं देखा गया, लेकिन आश्चर्य है कि किसी प्रकार की मेमोरी लीक या बग है।
GoodwinSQL

3

आवश्यकताएँ

चलाने के लिए DBCC FREEPROCCACHEया DBCC FREESYSTEMCACHEआपके खाते की अनुमति की आवश्यकता होती है ALTER SERVER STATE

संदर्भ

  • DBCC FREESYSTEMCACHE (Transact-SQL) (Microsoft डॉक्स)

    सर्वर पर अलर्ट सर्वर की अनुमति की आवश्यकता है।

  • DBCC FREEPROCCACHE (Transact-SQL) (Microsoft डॉक्स)

    इस पर लागू होता है: SQL सर्वर, समानांतर डेटा वेयरहाउस

    • सर्वर पर अलर्ट सर्वर की अनुमति की आवश्यकता है।

संसाधन राज्यपाल

क्या AWS RDS संसाधन गवर्नर सेटिंग्स के लिए अनुमति देता है? यदि हाँ, तो वाक्य रचना है:

DBCC FREEPROCCACHE ('<pool_name>'). 

पता लगाएँ कि क्या आपके पास पूल हैं:

SELECT * FROM sys.dm_resource_governor_resource_pools

अनुमतियों का सत्यापन

यदि आपके पास ये अनुमतियाँ हैं, तो यह निर्धारित करने के लिए निम्न आदेश चलाएँ:

SELECT * FROM sys.fn_my_permissions(NULL,NULL)

सीमाएँ / प्रतिबंध

अध्याय Microsoft SQL Server सुरक्षा में अमेज़न RDS पर लेख Microsoft SQL Server में दस्तावेज के रूप में AWS RDS उदाहरण के प्रशासकों को दी गई अनुमतियों पर कुछ प्रतिबंध हैं

यहाँ एक अवलोकन है:

निम्नलिखित सर्वर-स्तरीय भूमिकाएँ वर्तमान में अमेज़न RDS में उपलब्ध नहीं हैं:

  • bulkadmin
  • dbcreator
  • diskadmin
  • securityadmin
  • ServerAdmin
  • सिस्टम प्रशासक

निम्न सर्वर-स्तर अनुमतियाँ SQL सर्वर DB इंस्टेंस पर उपलब्ध नहीं हैं:

  • व्यवस्थापक बल्क संचालन
  • किसी भी विषय से पहले
  • किसी भी घटना का विवरण
  • किसी भी घटना से पहले
  • किसी भी सर्वर लेखा परीक्षा से पहले
  • अन्य संसाधन
  • अन्य सेटिंग (आप पैरामीटर को संशोधित करने के लिए DB पैरामीटर समूह API का उपयोग कर सकते हैं। अधिक जानकारी के लिए, DB पैरामीटर समूह के साथ कार्य करना देखें।
  • स्वचालित सर्वर
  • CONTROL_SERVER
  • डीडीएल ईवेंट अधिसूचना बनाएँ
  • बनाएँ समाप्ति
  • निर्माण की घटना की अधिसूचना
  • बाहरी पहुंच सहायता
  • SHUTDOWN (आप इसके बजाय RDS रिबूट विकल्प का उपयोग कर सकते हैं)
  • UNSAFE सहायता
  • किसी भी उपलब्धता समूह (SQL सर्वर 2012 केवल) से
  • किसी भी उपलब्धता समूह (SQL सर्वर 2012 केवल) बनाएँ

दस्तावेज़ के प्रकाशित होने के बाद से ये प्रतिबंध / सीमाएं बदल सकती हैं।

अन्य संसाधन

ब्रेंट ओजर ने एक लेख " एसक्यूएल सर्वर आरडीएस " लिखा, जहां उन्होंने कहा कि ...

कई DBCC कमांड बिल्कुल काम नहीं करते - DBCC DBINFOऔर DBCC LOGINFOस्पष्ट रूप से इनकार कर दिए गए थे। हालाँकि, मुझे पता था कि मैं DBCC FREEPROCCACHEजितनी बार चाहे दौड़ सकता था।

ध्यान रखें कि ये सीमाएँ समय के साथ बदल सकती हैं - नियमित आधार पर नई सुविधाएँ जोड़ी जाती हैं।

अमेज़ॅन समर्थन

यदि आपके खाते में आवश्यक अनुमतियाँ हैं और आप कैश मुक्त नहीं कर पा रहे हैं, तो आप अमेज़न के साथ एक समर्थन टिकट खोल सकते हैं।


इसमें अधिक विवरण के साथ अद्यतन प्रश्न। आपकी विचारशील और विस्तृत प्रतिक्रिया के लिए धन्यवाद। मैं आरडीएस में अन्य चीजों के साथ अनुमतियों के मुद्दों को चलाता हूं, लेकिन इसका समर्थन किया जाना चाहिए। अगर मुझे यहां बहुत अधिक गतिविधि नहीं मिलती है तो मैं आज बाद अमेज़ॅन सपोर्ट से संपर्क करूंगा। यह एक आरडीएस समस्या की तुलना में SQL सर्वर समस्या की तरह अधिक लग रहा था, और मुझे नहीं पता कि इस बढ़िया समुदाय की तुलना में जानकार या विशिष्ट उनका समर्थन कैसे करेंगे!
प्रोफेशनल साउंडिंग नेम

1
मैं आपकी प्रतिक्रिया की सराहना करता हूं। मुझे लगता है कि आप अमेज़ॅन या माइक्रोसॉफ्ट के साथ एक टिकट खोलना चाहते हैं, यह देखते हुए कि कुछ भी काम नहीं करता है। और फिर, यह एक बग या एक विशेषता (सीमा के कारण ....) हो सकता है।
जॉन उर्फ ​​हॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.