पता करें कि SQL Server 2005 में कौन सा डेटाबेस कितना रैम का उपयोग करता है


12

मेरे एक मित्र ने आज मुझसे पूछा (उसके एक उत्तेजित ग्राहक को शांत करने की कोशिश करते हुए) आप SQL Server 2005 में कैसे पता लगा सकते हैं कि कौन सा डेटाबेस किसी भी समय कितने मेमोरी (सर्वर की रैम में है) का उपयोग करता है।

क्या यह संभव है? यदि हां, तो कैसे? क्या आप बिल्ट-इन SQL सर्वर टूल्स के साथ ऐसा कर सकते हैं, या क्या आपको अतिरिक्त थर्ड-पार्टी विकल्पों की आवश्यकता है?

उनके ग्राहक सभी चकित थे क्योंकि उनकी समर्पित SQL सर्वर मशीन अचानक अपने 4 जीबी रैम के सभी लेकिन 200KB का उपयोग करती है। मुझे नहीं लगता कि यह एक समस्या है, वास्तव में - लेकिन चूंकि यह आदमी दावा करता है कि यह रात में कम या ज्यादा हुआ था, वह जानना चाहता है कि स्मृति के उपयोग में यह वृद्धि किस कारण हुई .....

न घुलनेवाली तलछट

जवाबों:


25

यह बफर पूल में अधिक पृष्ठों को पढ़ने के लिए एक क्वेरी के कारण सबसे अधिक संभावना थी, और बफर पूल उस को समायोजित करने के लिए अधिक मेमोरी को हथियाने। यह SQL सर्वर काम करने वाला है। यदि बॉक्स मेमोरी दबाव का अनुभव करता है, तो यह SQL सर्वर को कुछ मेमोरी छोड़ने के लिए कहेगा, जो वह करेगा। ग्राहक को चिंतित नहीं होना चाहिए।

आप DMV sys.dm_os_buffer_descriptorsका उपयोग यह देखने के लिए कर सकते हैं कि किस डेटाबेस द्वारा बफर पूल मेमोरी का कितना उपयोग किया जा रहा है। यह स्निपेट आपको बताएगा कि प्रत्येक डेटाबेस से कितने स्वच्छ और गंदे (अंतिम चेकपॉइंट या डिस्क से पढ़े गए) पृष्ठ बफर पूल में हैं। आप आगे संशोधित कर सकते हैं।

SELECT
   (CASE WHEN ([is_modified] = 1) THEN 'Dirty' ELSE 'Clean' END) AS 'Page State',
   (CASE WHEN ([database_id] = 32767) THEN 'Resource Database' ELSE DB_NAME (database_id) END) AS 'Database Name',
   COUNT (*) AS 'Page Count'
FROM sys.dm_os_buffer_descriptors
   GROUP BY [database_id], [is_modified]
   ORDER BY [database_id], [is_modified];
GO

मैं इस ब्लॉग पोस्ट के अंदर थोड़ा और समझाता हूं स्टोरेज इंजन के अंदर: बफर पूल में क्या है?

आप KB 907877 ( SQL Server 2005 पर मेमोरी उपयोग की निगरानी के लिए DBCC MEMORYSTATUS कमांड का उपयोग कैसे करें) चेकआउट भी कर सकते हैं जो आपको SQL सर्वर के बाकी मेमोरी उपयोग (लेकिन प्रति-डेटाबेस नहीं) के टूटने का विचार देगा।

उम्मीद है की यह मदद करेगा!


तुम एक प्रतिभाशाली, पॉल हो!
marc_s

2

आपका मित्र RAM की मात्रा को भी सीमित कर सकता है जो कि SQL लेगा, क्योंकि जैसा कि पॉल ऊपर बताता है, SQL प्रत्येक मेमोरी को ले सकता है।

SQL Server द्वारा ली गई मेमोरी की मात्रा को 2000 एमबी (या जो भी आपको सबसे अच्छा लगता है) को सीमित करें।

--Enable advanced options:
USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE

--Set the maximum amount of memory to 2000 MB:
USE master
EXEC sp_configure 'max server memory (MB)', 2000
RECONFIGURE WITH OVERRIDE

--Display the newly set configuration:
USE master
EXEC sp_configure 'max server memory (MB)'

--Set 'show advanced options' back to default:
USE master
EXEC sp_configure 'show advanced options', 0 
RECONFIGURE WITH OVERRIDE

धन्यवाद - मुझे पता था कि मेमोरी को कैसे सीमित करना है, लेकिन मुझे नहीं पता था कि कैसे पता लगाया जाए कि कौन सी डीबी किसी भी समय में कितने बफर पूल मेमोरी का उपयोग कर रही है।
marc_s
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.