Поделиться через


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

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

По умолчанию, SQL Server может динамически изменять требования к памяти на основе доступности системных ресурсов. По умолчанию параметр min server memory равен 0, а параметр max server memory — 2147483647. Минимальный объем памяти, который можно установить для параметра max server memory, равен 16 мегабайтам (МБ).

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

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

Когда SQL Server использует память более динамически, он периодически опрашивает систему, чтобы определить объем свободной физической памяти. В MicrosoftWindows 2000SQL Server увеличивает или уменьшает буферный кэш, чтобы удерживать объем свободной физической памяти в пределах от 4 до 10 МБ в зависимости от активности сервера. Поддержание данного объема свободной памяти освобождает операционную систему Windows 2000 от необходимости использования файла подкачки. Если свободной памяти меньше, SQL Server освобождает память для операционной системы Windows 2000. Если свободной памяти больше, SQL Server выделяет память под буферный пул. SQL Server добавляет память в буферный пул, только если она требуется для рабочей нагрузки; во время простоя размер буферного пула не увеличивается.

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

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

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

Существует два основных метода настройки параметров памяти SQL Server вручную.

  • Во-первых, можно установить для параметров min server memory и max server memory одинаковое значение. В этом случае объем памяти, выделенной буферному пулу 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 КБ. Параметр Максимальный размер памяти сервера должен быть больше суммы этих двух значений, чтобы избежать возникновения ошибок превышения допустимого объема памяти. Приблизительное значение наименьшего разумного значения параметра Максимальный размер памяти сервера (в МБ) — это ([Заимствованных страниц] + [Зарезервированных страниц])/ 100. При уменьшении параметра Максимальный размер памяти сервера, возможно, придется перезапустить 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. Дополнительные сведения см. в разделе Память с «горячей» заменой.

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

В Windows Server 2003 динамическая память AWE поддерживается, если на сервере установлено меньше памяти по сравнению с указанным виртуальным ограничением. Для поддержки памяти AWE в Windows 2000 требуется, чтобы объем доступной физической памяти превышал объем виртуальной памяти.

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

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

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

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

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

Такие 32-разрядные операционные системы, как Windows 2000 и Windows Server 2003, обеспечивают доступ к 4 ГБ виртуального адресного пространства. Нижние 2 ГБ виртуальной памяти предназначены всем процессам и доступны приложениям. Верхние 2 ГБ зарезервированы для операционной системы. Все выпуски операционных систем, начиная с MicrosoftWindows XP Professional, включая Windows Server 2003, содержат переключатель в файле boot.ini, предоставляющий приложениям доступ к 3 ГБ виртуальной памяти, ограничивая объем памяти, доступный операционной системе, до 1 ГБ. Дополнительные сведения о переключателе конфигурации памяти 3GB см. в документации Windows.

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

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

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

  • Выпуск Windows Server 2003 Standard Edition поддерживает до 4 ГБ физической памяти.

  • Выпуск Windows Server 2003 Enterprise поддерживает до 32 ГБ физической памяти.

  • Выпуск Windows Server 2003 Datacenter Edition поддерживает до 64 ГБ физической памяти.

Такие приложения Win32, как SQL Server, воспринимают только виртуальные или логические адреса, а не физические. Объем физической памяти, который приложение использует в определенный момент времени (рабочее множество) определяется доступным объемом физической памяти и диспетчером виртуальной памяти (VMM). Приложение не может напрямую управлять объемом памяти.

Операционные системы Windows 2000 Advanced Server и Windows 2000 Datacenter Server, так же как и 32-разрядные версии Windows Server 2003 Enterprise Server и Windows Server 2003 Datacenter Server, поддерживают возможность увеличения объема доступной памяти выше ограничения 4 ГБ благодаря расширениям Intel PAE. Переключатель /PAE в файле конфигурации Windows boot.ini предоставляет доступ к физической памяти выше 4 ГБ. Эта возможность является обязательной для памяти AWE. Дополнительные сведения о переключателе конфигурации памяти для Windows 2000 и Windows Server 2003 см. в документации по Windows.

Такие операционные системы, работающие с виртуальной памятью, как Windows 2000 и Windows Server 2003, разрешают перерасход физической памяти, поэтому отношение виртуальной и физической памяти может превышать 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, корректируя размеры своих буферных пулов. С момента внедрения пакета обновления 1 для Windows Server 2003 операционная система Windows не выполняет балансировки памяти между приложениями с помощью уведомлений памяти API-интерфейса. Эти уведомления лишь обеспечивают глобальную обратную связь относительно доступности памяти в системе.

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

Примеры

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

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