Я получил ниже определение от Боба Дорра о том, что контролирует память 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 Server, выделяется за пределами максимальной памяти сервера. Операция резервного копирования IIRC в SQL Server 2012 также все еще выделяется из памяти вне пула буферов.
Используете ли вы связанный сервер для запроса других СУБД? Любое другое программное обеспечение, установленное на той же машине 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 memorystatus я могу видеть 2 узла NUMA, и память, используемая каждым узлом, составляет приблизительно
Node 1 : VM Committed 33554380
Node 2: VM Committed 33554420
Total is approx 64 G.
Опять же, если вы видите диспетчер памяти в memorystatus, выведите его
Memory Manager KB
---------------------------------------- -----------
VM Reserved 260726964
VM Committed **67108820**
Зафиксированная виртуальная машина фактически является виртуальной памятью, зафиксированной 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;
?