Параметры памяти сервера

Настроив параметры памяти сервера min server memory и max server memory, настройте объем памяти (в мегабайтах), занимаемой в буферном пуле экземпляром Microsoft SQL Server.

По умолчанию, SQL Server может динамически изменять требования к памяти на основе доступности системных ресурсов. По умолчанию параметр min server memory имеет значение 0, а параметр max server memory — значение 2 147 483 647 MБ. Минимальный размер памяти, который можно указать в параметре max server memory, составляет 16 МБ.

ПримечаниеПримечание

Если присвоить параметру max server memory минимальное значение, производительность SQL Server может значительно ухудшиться, иногда сервер даже не будет запускаться. Если не удается запустить SQL Server после изменения этого параметра, запустите его с параметром –f и восстановите предыдущее значение параметра max server memory. Дополнительные сведения см. в разделе Использование параметров запуска службы SQL Server.

Когда SQL Server использует память динамически, он периодически опрашивает систему, чтобы определить объем свободной физической памяти. SQL Server использует API уведомления памяти QueryMemoryResourceNotification, чтобы определить, когда можно выделить и освободить память буферного пула.

Рекомендуется разрешить SQL Server использовать память динамически; однако существует возможность установить параметры памяти вручную и ограничить объем памяти, доступный серверу SQL Server. Прежде чем настраивать объем памяти для SQL Server, выясните подходящее значение — из общего объема физической памяти нужно вычесть объем, который требуется для операционной системы и других экземпляров SQL Server, а также для других нужд, если компьютер не является выделенным для сервера SQL Server. Разница — максимальный объем памяти, который можно выделить серверу SQL Server.

Настройка параметров памяти вручную

Установите параметры min server memory и max server memory в значения, покрывающие весь доступный объем памяти. Этот метод полезно использовать, когда требуется настроить экземпляр SQL Server так, чтобы его параметры не противоречили требованиям к памяти других приложений, запущенных на этом компьютере.

Параметр min server memory позволяет задать минимальный объем памяти, доступный буферному пулу экземпляра SQL Server. Экземпляр SQL Server не выделяет объем памяти, заданный параметром min server memory, сразу после загрузки. Тем не менее, когда это значение достигается с ростом рабочей нагрузки, экземпляр SQL Server не может освободить память, выделенную буферному пулу, если не уменьшить параметр min server memory.

ПримечаниеПримечание

Сервер SQL Server не гарантирует, что объем памяти, заданный параметром min server memory, будет выделен. Если нагрузка на сервер никогда не требует выделения всего объема памяти, заданного параметром min server memory, сервер SQL Server будет использовать меньше памяти.

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

Перед уменьшением значения параметра max server memory оцените с помощью системного монитора объект производительности SQLServer:Buffer Manager, работающий под нагрузкой, и запомните текущие значения счетчиков Заимствованных страниц и Зарезервированных страниц. В этих счетчиках память представлена в виде ряда страниц объемом 8 КБ. Параметр Максимальный размер памяти сервера должен быть больше суммы этих двух значений, чтобы избежать возникновения ошибок превышения допустимого объема памяти. Примерно обоснованное минимальное значение max server memory (в мегабайтах) равно ([заимствованных страниц] + [зарезервированных страниц])/ 100. Возможно, для снижения значения max server memory необходимо будет перезапустить SQL Server, чтобы освободить память. Сведения о настройке параметров памяти см. в разделе Как установить фиксированный размер памяти (среда SQL Server Management Studio).

Режим «максимизировать пропускную способность для сетевых приложений»

Чтобы оптимизировать использование системной памяти для SQL Server, следует ограничить объем памяти, используемой системой для кэширования файлов. Чтобы ограничить кэш файловой системы, убедитесь, что снят флажок макс. пропускная способность доступа к общим файлам. Можно указать кэш файловой системы минимального размера, выбрав вариант наименьшая занимаемая память или сбалансированный.

Проверка значения параметра в операционной системе

  1. Нажмите кнопку Пуск, выберите пункт Панель управления, дважды щелкните Сетевые подключения, а затем значок Подключение по локальной сети.

  2. На вкладке Общие нажмите кнопку Свойства и выберите Служба доступа к файлам и принтерам сетей Microsoft, затем нажмите кнопку Свойства.

  3. Если выбран параметр макс. пропускная способность для сетевых приложений, выберите любой другой параметр, нажмите кнопку ОК и закройте остальные диалоговые окна.

Память AWE в Windows Server 2003

В Windows Server 2003 сервер SQL Server может использовать память расширения AWE для улучшенного баланса собственных требований к памяти и требований операционной системы. Балансом памяти между экземпляром SQL Server и операционной системой можно управлять при помощи параметров min server memory и max server memory. Если оборудование сервера поддерживает память с «горячей» заменой, при необходимости сервер можно оснастить дополнительной памятью без перезагрузки. Дополнительные сведения о параметре конфигурации awe enabled см. в разделе Параметр awe enabled. Дополнительные сведения см. в разделе Память с «горячей» заменой.

ПримечаниеПримечание

Динамическая память AWE поддерживается, если на сервере установлено меньше памяти по сравнению с указанным виртуальным ограничением.

В идеале следует выделить как можно больше памяти экземпляру SQL Server, чтобы не заставлять систему сбрасывать страницы на диск. Пороговое значение зависит от операционной системы. Например, если в системе все 32 гигабайта (ГБ) выделены экземпляру SQL Server, 30-31 ГБ могут быть подходящим пороговым значением для SQL Server; в системе с 64 ГБ пороговым значением может быть 60-62 ГБ.

ПримечаниеПримечание

При увеличении объема памяти, доступного SQL Server, убедитесь в том, что на диске достаточно свободного места для файла поддержки виртуальной памяти операционной системы (Pagefile.sys). Дополнительные сведения о файле поддержки виртуальной памяти см. в документации по Windows.

При настройке объема памяти пользуйтесь статистикой системного монитора Windows. Изменяйте это значение только при добавлении или удалении памяти или при перераспределении использования ресурсов системы.

Диспетчер виртуальной памяти

32-разрядные операционные системы обеспечивают доступ к 4 ГБ виртуального адресного пространства. 2 ГБ виртуальной памяти предназначены всем процессам и доступны приложениям. 2 ГБ зарезервированы для использования операционной системой. Во всех выпусках операционных систем имеется переключатель, предоставляющий приложениям доступ к 3 ГБ виртуальной памяти, что ограничивает объем памяти, доступный операционной системе, до 1 ГБ. Дополнительные сведения о переключателе конфигурации памяти см. раздел о настройке 4 ГБ памяти (4GT) в документации по Windows. При запуске 32-разрядной версии SQL Server с 64-разрядной операционной системой доступное пользователю виртуальное адресное пространство составляет полные 4 ГБ.

ПримечаниеПримечание

PAE автоматически включено, только если сервер использует устройства памяти с «горячей» заменой. В этом случае не нужно использовать переключатель /PAE в системе, которая настроена на использование устройств памяти с «горячей» заменой. Во всех прочих случаях для обращения к памяти за пределами 4 ГБ необходимо включить переключатель /PAE в файле Boot.ini.

Адресное пространство размером 4 ГБ сопоставляется с физической памятью диспетчером виртуальной памяти Windows (VMM). Таким образом, объем доступной расширениям AWE физической памяти зависит от используемой операционной системы. Дополнительные сведения о размере физической памяти, поддерживаемой различными операционными системами, см. в документации по Windows «Ограничения памяти для выпусков Windows».

Операционные системы, работающие с виртуальной памятью, разрешают перерасход физической памяти, поэтому отношение виртуальной и физической памяти может превышать 1:1. В результате программы большего размера можно запускать на компьютерах с различными конфигурациями физической памяти. Тем не менее, если объем используемой виртуальной памяти значительно превышает общий объем рабочих множеств всех процессов, производительность может ухудшиться.

Параметры min server memory и max server memory являются расширенными. Если для изменения настроек используется системная хранимая процедура sp_configure, то изменить их можно только при условии, что параметр show advanced options имеет значение 1. Изменения этих параметров вступают в силу немедленно без перезапуска сервера.

Выполнение нескольких экземпляров SQL Server

При выполнении нескольких экземпляров компонента Database Engine существует три подхода к управлению памятью.

  • Контроль использования памяти с помощью параметра max server memory. Установите максимальные значения для каждого экземпляра, учитывая, что их сумма не должна превышать общий объем физической памяти, установленной на компьютере. Рекомендуется выделять каждому экземпляру объем памяти, пропорциональный его ожидаемой рабочей нагрузке или размеру базы данных. Данный подход имеет то преимущество, что свободная память доступна новым процессам или экземплярам сразу же после их запуска. Недостаток состоит в том, что, когда выполняются не все экземпляры, ни один из выполняющихся экземпляров не сможет использовать память, оставшуюся свободной.

  • Контроль использования памяти с помощью параметра min server memory. Установите минимальные значения для каждого экземпляра так, чтобы их сумма была на 1-2 ГБ меньше общего объема физической памяти, установленной на компьютере. Рекомендуется выделять каждому экземпляру минимальный объем памяти, пропорциональный его ожидаемой рабочей нагрузке. Данный подход имеет то преимущество, что выполняющиеся экземпляры могут использовать оставшуюся свободную память в случае, когда выполняются не все экземпляры. Данный подход также полезен, когда на компьютере выполняется другой процесс, интенсивно потребляющий память, так как при этом обеспечивается удовлетворение как минимум заданных потребностей сервера SQL Server в памяти. Недостаток состоит в том, что при запуске нового экземпляра (или любого другого процесса) уже выполняющимся экземплярам требуется некоторое время для освобождения памяти, особенно если для этого им необходимо записать измененные страницы обратно в базу данных. Возможно, придется также значительно увеличить размер файла подкачки.

  • Отсутствие действий (не рекомендуется). Первый экземпляр, столкнувшийся с рабочей нагрузкой, попытается захватить всю память. Простаивающие или позднее запущенные экземпляры в конечном итоге могут получить лишь минимальный объем памяти. SQL Server не пытается балансировать использование памяти несколькими экземплярами. Тем не менее, все экземпляры будут реагировать на сигналы уведомлений памяти Windows, корректируя размеры своих буферных пулов. Операционная система Windows не выполняет балансировку памяти между приложениями с помощью уведомлений памяти API-интерфейса. Эти уведомления лишь обеспечивают глобальную обратную связь относительно доступности памяти в системе.

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

Примеры

В следующем примере параметр max server memory устанавливается равным 4 ГБ.

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO