Я нижче отримав визначення від Боба Дорра про те, що управляє пам'яттю Max Server у SQL Server 2012. Ви також можете прочитати Книги в Інтернеті для отримання більш детальної інформації
Макс серверної пам’яті керує розподілом пам’яті SQL Server, включаючи пул буфера, компіляцію пам’яті, усі кеші, гранти qe, пам’ять менеджера блокування та пам’ять CLR (в основному будь-який «клерк», як знайдено в dm_os_memory_clerks). Пам'ять для стеків потоків, купи пам'яті, постачальників пов'язаних серверів, відмінних від SQL Server, або будь-якої пам'яті, виділеної DLL "не SQL Server", не контролюється максимальною пам'яттю сервера.
Пам'ять, виділена для стека потоків, стороннього DLL, постачальника пов'язаного сервера, який відрізняється від Microsoft (наприклад, MySQL.PostgreSQL тощо) або будь-якої DLL, завантаженої в адресний простір SQL Server, який не є сервером SQL, виділяється поза максимальною пам'яттю сервера. Операція резервного копіювання IIRC в SQL Server 2012 також все ще виділяється пам'яттю поза буферним пулом.
Ви використовуєте зв'язаний сервер для запиту інших RDBMS? Будь-яке інше програмне забезпечення, встановлене на цій же машині Windows. Чи можете ви розмістити в якомусь спільному розташуванні вихід із наступних запитів
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**
Виконаний VM - це фактично віртуальна пам'ять, здійснена SQL Server, і оскільки ця пам’ять здійснюється, вона є physical memory backing it
. Це ще раз змушує мене думати, що SQL Server використовує 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;
?