Я хотел бы ваш вклад по этому вопросу. У меня есть SQL Server 2008r2 Ent. Издание 64 бита с 16 ядрами и 64 ГБ оперативной памяти. По состоянию на 20111014 существует один экземпляр SQL-сервера, полностью исправленный.
Максимальный RAM установлен на 60000MB. Количество бесплатных оперативной памяти составляет 0 в зависимости от менеджера задач после нескольких дней онлайн.
Если я изменю максимальный объем памяти ниже 53 ГБ, то через несколько дней он стабилизируется и получит некоторый свободный объем памяти.
Это процесс sql, который распределяет оперативную память в соответствии с диспетчером задач. Как мне смириться с тем, что на самом деле проблема? Само собой разумеется, что я уже много тестировал, но еще не решил это по своему вкусу. и, о-о, мы не получаем типичное отставание в памяти, когда доступный оперативный памяти уменьшается до 0 бесплатно.
Обновление 1:
Вдохновленный другим Q / A, связанным с RAM на этой странице /dba//a/7062/2744 . Я использовал эти два, чтобы увидеть, для чего используется ОЗУ.
SELECT TOP ( 10 )
[type] AS [Memory Clerk Type] ,
SUM(single_pages_kb) AS [SPA Mem, Kb]
FROM sys.dm_os_memory_clerks
GROUP BY [type]
ORDER BY SUM(single_pages_kb) DESC
OPTION ( RECOMPILE ) ;
SELECT DB_NAME(database_id) AS [Database Name] ,
COUNT(*) * 8 / 1024.0 AS [Cached Size (MB)]
FROM sys.dm_os_buffer_descriptors
--WHERE database_id > 4 -- system databases
-- AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC
OPTION ( RECOMPILE ) ;
Используемый объем, показанный этими данными, в первую очередь составляет 7948432 КБ, а второй - 44030 57812 МБ, что в общей сложности составляет около 52 ГБ, используемых сервером sql ... так куда же ушла остальная часть моей ОЗУ? :-) Диспетчер задач показывает, что сейчас кэшировано 363, доступно 401, свободно 40, и sqlservr.exe имеет частную память, установленную в 64 459 656. Max Ram, как и раньше, установлен на 60000 МБ.