मुझे SQL सर्वर 2012 में अधिकतम सर्वर मेमोरी को नियंत्रित करने के बारे में बॉब डोर से परिभाषा मिली। अधिक विवरण के लिए आप पुस्तकें ऑनलाइन भी पढ़ सकते हैं
अधिकतम सर्वर मेमोरी SQL सर्वर मेमोरी आवंटन को नियंत्रित करती है, जिसमें बफर पूल, मेमोरी, सभी कैश, क्यू मेमोरी मेमोरी, लॉक मैनेजर मेमोरी, और सीएलआर मेमोरी (मूल रूप से किसी भी "क्लर्क" जैसे dm_os_memory_cnks) शामिल हैं। थ्रेड स्टैक के लिए मेमोरी, मेमोरी ढेर, SQL सर्वर के अलावा अन्य लिंक किए गए सर्वर प्रदाता, या "गैर SQL सर्वर" DLL द्वारा आवंटित किसी भी मेमोरी को अधिकतम सर्वर मेमोरी द्वारा नियंत्रित नहीं किया जाता है।
थ्रेड स्टैक, थर्ड पार्टी DLL, लिंक्ड सर्वर प्रदाता के लिए आवंटित की गई मेमोरी जो Microsoft (MySQL.PostgreSQL आदि) या SQL सर्वर एड्रेस स्पेस में लोड किए गए किसी भी DLL के अलावा अन्य है जो गैर SQL सर्वर अधिकतम सर्वर मेमोरी के बाहर आवंटित किया गया है। SQL सर्वर 2012 में IIRC बैकअप ऑपरेशन अभी भी बफर पूल के बाहर मेमोरी आवंटित किया गया है।
क्या आप अन्य RDBMS को क्वेरी करने के लिए लिंक किए गए सर्वर का उपयोग कर रहे हैं? एक ही विंडोज़ मशीन पर कोई अन्य सॉफ़्टवेयर स्थापित किया गया है। क्या आप कुछ साझा स्थानों पर निम्न प्रश्नों का आउटपुट पोस्ट कर सकते हैं
select type,
sum(pages_kb)/1024 as [Memory utilized in MB],
sum(awe_allocated_kb)/1024 as [Memory allocated though Windows API]
from sys.dm_os_memory_clerks
group by type
order by [Memory utilized in MB] desc
Go
-------
select (virtual_address_space_committed_kb/1024) as virtual_address_space_committed_MB,
(locked_page_allocations_kb/1024) locked_page_allocations_MB,
(pages_kb/1024) [memory allocated MB]
from sys.dm_os_memory_nodes
Go
-------
SELECT SUM (pages_in_bytes)/1024 as 'KB Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'KB Used' DESC;
GO
--------
select name,
type,
sum(pages_kb)/1024 as [Mem MB],
sum(entries_count) as [Total Entry count] from sys.dm_os_memory_cache_counters
group by
type, name
order by [Mem MB] desc
Go
-----
select * from sys.dm_os_loaded_modules where company <> 'Microsoft Corporation'
go
क्या आप DBCC MMEMORYSTATUS
कुछ साझा स्थान पर पूर्ण आउटपुट अपलोड कर सकते हैं और यहां लिंक पोस्ट कर सकते हैं। यह समझने में मदद करेगा कि कौन सा घटक मेमोरी ले रहा है
संपादित करें: dbcc मेमोरीस्टैटस आउटपुट के अनुसार मैं 2 NUMA नोड्स देख सकता हूं और प्रत्येक नोड द्वारा उपयोग की जाने वाली मेमोरी रिक्त है
Node 1 : VM Committed 33554380
Node 2: VM Committed 33554420
Total is approx 64 G.
फिर अगर आप मेमोरीस्टैटस आउटपुट में मेमोरी मैनेजर देखते हैं
Memory Manager KB
---------------------------------------- -----------
VM Reserved 260726964
VM Committed **67108820**
वीएम प्रतिबद्ध वास्तव में वर्चुअल मेमोरी SQL सर्वर द्वारा प्रतिबद्ध है और चूंकि यह मेमोरी प्रतिबद्ध है physical memory backing it
। यह फिर से जो मुझे लगता है कि SQL सर्वर अधिकतम सर्वर स्मृति में सेट के रूप में 65 G का उपयोग कर रहा है
यह वह है जो अधिकतम सर्वर मेमोरी है। तो मेमोरी दोनों नोड्स के बीच अच्छी तरह से वितरित की जाती है आप जाँच करने के लिए नीचे क्वेरी जूट का आउटपुट भी जोड़ सकते हैं। कृपया स्क्रीनशॉट जोड़ें
SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC;
?