Використання динамічного управління пам'яттю. Виділення фіксованого об'єму оперативній пам'яті.


Использование динамического управления памятью

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

Для динамического управления памятью выполните следующую последовательность действий.

1. В диалоговом окне Server Properties (Свойства сервера) перейдите на страницу Memory (Память).

2. Установите разные значения минимального и максимального использования памяти в полях Minimum server memory (in MB) (Минимальный объем памяти, используемой сервером (в Мбайт)) и Maximum server memory (in MB) (Максимальный объем памяти, используемой сервером (в Мбайт)) соответственно. Рекомендованным максимальным значением для одиночных серверов является значение, равное общему количеству памяти (физической + виртуальной), или же приближенное к нему. Однако, если на компьютере запущено несколько экземпляров SQL Server, следует рассчитать максимальную память сервера таким образом, чтобы между экземплярами не было конфликта за выделение памяти.

3. Щелкните кнопку OK.

Изменить минимальный и максимальный пороги выделения памяти можно с помощью хранимой процедуры sp_configure, применив такие инструкции Transact-SQL:

EXEC sp_configure 'min server memory', number_of_megabytes

EXEC sp_configure 'max server memory', number_of_megabytes

Совет При динамическом управлении памятью обычно не требуется устанавливать минимальное и максимальное значения. Однако на выделенной системе, выполняющей только SQL Server, можно добиться более сбалансированной работы, установив объем минимальной памяти 8 Мбайт + (24 Кбайт * количество_пользователей), где количество_пользователей является средним числом пользователей, одновременно подключенных к серверу. Можно также зарезервировать для SQL Server физическую память. SQL Server требует около 8 Мбайт для кода и внутренних структур. Дополнительная память используется следующим образом: 96 байтов — блокировкой, 2880 байтов — открытой БД и 276 байтов — открытым объектом, что включает все таблицы, представления, хранимые процедуры, расширенные хранимые процедуры, триггеры, правила, ограничения и умолчания. Можно проверить минимальное использование памяти с помощью объекта SQLServer:Memory Manager (SQL Server:Диспетчер памяти) компонента управления System Monitor (Системный монитор). Выберите для мониторинга все счетчики и с помощью вкладки Report (Отчет) контролируйте использование памяти. Обратите особое внимание на счетчик Total Server Memory (Общая память сервера).

 

Выделение фиксированного объема оперативной памяти

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

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

1. В диалоговом окне Server Properties (Свойства сервера) перейдите на страницу Memory (Память).

2. Установите одинаковые значения в полях Minimum server memory (in MB) (Минимальный объем памяти, используемой сервером (в Мбайт)) и Maximum server memo ry (in MB) (Максимальный объем памяти, используемой сервером (в Мбайт)), которые должны быть равны объему памяти, необходимой для резервирования.

3. Щелкните кнопку OK.

Также для резервирования физической памяти можно использовать хранимую процедуру sp_configure, применив такие инструкции Transact-SQL:

EXEC sp_configure 'set working set size', 1

GO

EXEC sp_configure 'min server memory', number_of_megabytes

GO

EXEC sp_configure 'max server memory', number_of_megabytes

GO

RECONFIGURE WITH OVERRIDE

GO

Внимание! Неверная установка фиксированного объема памяти может привести к серьезным проблемам производительности SQL Server. Используйте фиксированный объем памяти только в случае, если необходимо гарантировать постоянную доступность для SQL Server определенного количества физической памяти.