Параметры конфигурации памяти сервера

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

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

Примечание

Установка минимального значения максимальной памяти сервера может значительно снизить производительность SQL Server и даже помешать запуску. Если не удается запустить SQL Server после изменения этого параметра, запустите его с использованием параметра запуска -f и верните параметр max server memory к предыдущему значению. Дополнительные сведения см. в разделе Параметры запуска службы Database Engine.

Когда SQL Server использует память динамически, он периодически опрашивает систему, чтобы определить объем свободной памяти. Поддержание достаточного объема свободной памяти позволяет избежать подкачки в операционной системе (ОС). Если свободно меньше памяти, SQL Server высвобождает память для ОС. Если свободно больше памяти, SQL Server может выделить дополнительный объем памяти. SQL Server добавляет память, только если она требуется для рабочей нагрузки; во время простоя сервера размер виртуального адресного пространства не увеличивается.

Обратитесь к примеру B для запроса о возврате информации об используемой в настоящий момент памяти. max server memory управляет выделением памяти SQL Server, включая буферный пул, компилированную память, все кэши, предоставление памяти qe, память диспетчера блокировок и память clr (по существу любой клерк памяти, найденный в sys.dm_os_memory_clerks). Память для стеков потоков, кучи памяти, связанных поставщиков серверов, отличных от SQL Server, и любой памяти, выделенной библиотекой DLL, не SQL Server, не контролируется максимальным объемом памяти сервера.

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

Рекомендуется разрешить SQL Server динамически использовать память. Однако вы можете задать параметры памяти вручную и ограничить объем памяти, к которому SQL Server может получить доступ. Прежде чем задать объем памяти для SQL Server, определите соответствующий параметр памяти, вычитая из общего объема физической памяти память, необходимую для ОПЕРАЦИОННОй системы и любых других экземпляров SQL Server (и других системных ресурсов, если компьютер не полностью выделен для SQL Server). Эта разница заключается в максимальном объеме памяти, который можно назначить SQL Server.

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

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

Примечание

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

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

Примечание

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

Параметр max_server_memory гарантирует, что в ОС не возникнет дефицит памяти. Чтобы задать конфигурацию "Макс. памяти сервера", отследите общее использование памяти процессом SQL Server и определите требования к памяти. Более точные вычисления для одного экземпляра

  • Зарезервируйте 1–4 ГБ от общего объема памяти для ОС.
  • Затем вычтите эквивалент потенциального SQL Server выделения памяти за пределами элемента управления максимальной памятью сервера, который состоит из размера стека 1 * вычисляемого максимального количества рабочих потоков 2 + -g параметра запуска 3 (или 256 МБ по умолчанию, если параметр -g не задан). Остаток и даст значение параметра max_server_memory в случае установки одного экземпляра.

1 Сведения о размерах стеков потока для различных архитектур см. в разделе Руководство по архитектуре управления памятью.

2 Сведения о вычислении рабочих потоков по умолчанию для заданного числа сходных ЦП на текущем узле см. в разделе Настройка параметра конфигурации сервера "Максимальное число рабочих потоков".

3 Сведения о параметре запуска -g см. на странице документации Параметры запуска службы ядра СУБД. Возможность приложения только к 32-разрядным SQL Server (SQL Server 2005–SQL Server 2014).

Тип ОС Минимальный объем памяти, допустимый для максимального объема памяти сервера
32-разрядная система 64 МБ
64-разрядная система 128 МБ

Настройка параметров памяти с помощью среды SQL Server Management Studio

Используйте два параметра памяти сервера, Мин. памяти сервера и Макс. памяти сервера, для настройки объема памяти (в мегабайтах), находящейся в управлении диспетчера памяти SQL Server для экземпляра SQL Server. По умолчанию SQL Server может динамически изменять требования к памяти в зависимости от доступных системных ресурсов.

Настройка фиксированного объема памяти

Установка фиксированного размера памяти

  1. В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства.

  2. Щелкните узел Память .

  3. В пункте Параметры памяти серверавведите нужные значения в поля Минимальный размер памяти сервера и Максимальный размер памяти сервера.

    Оставьте параметры по умолчанию, чтобы SQL Server изменял требования к памяти динамически, исходя из доступности системных ресурсов. По умолчанию параметр min server memory имеет значение 0, а параметр max server memory — значение 2147483647 MБ.

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

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

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

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

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

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

Блокировка страниц в памяти

Эта политика Windows определяет, какие учетные записи могут использовать процесс для сохранения данных в физической памяти, чтобы система не отправляла страницы данных в виртуальную память на диске. Блокировка страниц в памяти может обеспечивать отклик сервера, когда содержимое памяти заносится в файл подкачки. Параметр SQL Server Блокировать страницы в памяти имеет значение ON в 32-разрядных и 64-разрядных экземплярах SQL Server 2014 Standard Edition и выше, если учетной записи с правами на выполнение sqlservr.exe предоставлено право пользователя Windows "Заблокированные страницы в памяти". В более ранних версиях SQL Server задание параметра блокировки страниц для 32-разрядного экземпляра SQL Server требовало, чтобы учетная запись с правами запуска sqlservr.exe имела права пользователя LPIM и параметр конфигурации «awe_enabled» был установлен равным ON.

Чтобы отключить параметр Блокировать страницы в памяти для SQL Server, удалите право пользователя "Заблокированные страницы в памяти" для учетной записи запуска SQL Server.

Отключение блокировки страниц в памяти

Чтобы отключить параметр блокировки страниц в памяти, выполните следующие действия.

  1. В меню Пуск выберите команду Выполнить. В поле Открыть введите gpedit.msc.

    Откроется диалоговое окно Групповая политика .

  2. В консоли Групповая политика разверните узел Конфигурация компьютера, затем узел Конфигурация Windows.

  3. Разверните узлы Настройки безопасностии Локальные политики.

  4. Выберите папку Назначение прав пользователя .

    Политики будут показаны на панели подробностей.

  5. На этой панели дважды щелкните параметр Блокировка страниц в памяти.

  6. В диалоговом окне Параметр политики локальной защиты выберите учетную запись с правами запуска sqlservr.exe и нажмите Удалить.

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

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

Определенные области адресного пространства сопоставляются с физической памятью диспетчером виртуальной памяти Windows (VMM).

Дополнительные сведения об объеме физической памяти, поддерживаемой различными операционными системами, см. в разделе «Ограничения памяти для выпусков 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-интерфейса. Эти уведомления лишь обеспечивают глобальную обратную связь относительно доступности памяти в системе.

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

Выделение SQL Server максимального объема памяти

32-разрядная версия 64-разрядная версия
Обычная память Ограничение виртуального адресного пространства для обработки во всех выпусках SQL Server:

2 ГБ

3 ГБ с параметром загрузки /3GB *

4 ГБ в WOW64**
Ограничение виртуального адресного пространства для обработки во всех выпусках SQL Server:

8 ТБ для архитектуры x64

*/3GB — это параметр загрузки операционной системы. Дополнительные сведения см. в библиотека MSDN.

**WOW64 (Windows в Windows 64) — это режим, в котором 32-разрядные SQL Server работают в 64-разрядной операционной системе. Дополнительные сведения см. в библиотека MSDN.

Примеры

Пример A

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

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

Пример Б. Определение текущего распределения памяти

Следующий запрос возвращает информацию о текущем распределении памяти.

SELECT  
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,  
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,  
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,  
process_physical_memory_low,  
process_virtual_memory_low  
FROM sys.dm_os_process_memory;  

См. также:

Наблюдение и настройка производительности
RECONFIGURE (Transact-SQL)
Параметры конфигурации сервера (SQL Server)
sp_configure (Transact-SQL)