Назад | Перейти на главную страницу

Параметр максимального объема памяти SQL Server 2008 не вступает в силу

У меня возникли проблемы с ограничением использования памяти SQL Server 2008 на нашем сервере Windows Server 2008. В системе 11 ГБ ОЗУ, я попытался ограничить использование памяти SQL до 8,5 ГБ, установив для параметра «Максимальный объем памяти сервера (в МБ)» значение 8500, но в настоящее время он все еще использует более 9,5 ГБ памяти (даже после перезагрузки).

Есть идеи, как правильно его ограничить?

Спасибо за ваше время

Эти настройки применяются только к пулу буферов. SQL Server также выделяет память за пределами этого региона. См. Следующий отрывок из электронной документации по SQL Server.

SQL Server как процесс требует больше памяти, чем указано параметром max server memory. Как внутренние, так и внешние компоненты могут выделять память вне пула буферов, который потребляет дополнительную память, но память, выделенная пулу буферов, обычно представляет собой наибольшую часть памяти, потребляемую SQL Server.

Для дальнейшего чтения см .: Параметры памяти SQL Server

Параметр «Макс. Объем памяти» охватывает не все, что делает SQL Server, а только пул буферов, который я бы в общих чертах описал как данные, хранящиеся в памяти, а не на диске.

Из BOL :

«SQL Server как процесс требует больше памяти, чем указано в параметре max server memory. Как внутренние, так и внешние компоненты могут выделять память за пределами буферного пула, что потребляет дополнительную память, но память, выделенная для буферного пула, обычно представляет собой наибольшую часть память, потребляемая SQL Server ".

Я думаю, что Джон прав на эти деньги. С Max server memory можно управлять только областью кэша данных / буферного пула. SQL Server по-прежнему будет использовать память для других областей, таких как расширенные процедуры, вызовы OLE-автоматизации, связанные серверы, поставщики OLEDB, SQL CLR, а также будет использоваться для выделений размером более 8 КБ (> 8 КБ), также известных как многостраничные выделения.

У Джонатана Кехайаса есть несколько отличных постов, чтобы понять эти области, и вы можете наверстать упущенное, когда у вас появится возможность.

http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/07/07/understanding-the-vas-reservation-aka-memtoleave-in-sql-server.aspx

http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/08/24/troubleshooting-the-sql-server-memory-leak-or-understanding-sql-server-memory-usage.aspx

Как вы измеряете использование памяти? Счетчики монитора производительности? Отображение в инструментах SQL? Диспетчер задач?

Может случиться так, что чтение, на которое вы смотрите, не показывает исключительно пул памяти, который вы пытаетесь ограничить. Если вы сообщите нам, откуда вы берете показания, вы, надеюсь, получите более конкретный ответ.