Архитектура оперативной памяти
SQL Server по мере необходимости динамически получает и освобождает оперативную память. Обычно администратору не требуется указывать, сколько памяти необходимо выделить для SQL Server, хотя эта возможность по-прежнему существует и в некоторых случаях необходима.
SQL Server поддерживает расширения AWE, позволяя использовать более 4 ГБ физической памяти на 32-разрядных версиях операционной системы Microsoft Windows. Поддерживается до 64 ГБ физической памяти. Экземпляры SQL Server, запущенные на MicrosoftWindows 2000, используют статическое распределение памяти AWE, в то время как экземпляры, запущенные на MicrosoftWindows Server 2003, — динамическое.
Примечание |
---|
Поддержка AWE доступна только в выпусках SQL Server Enterprise Edition, Standard Edition и Developer Edition для 32-разрядных операционных систем. Преимущества расширенной памяти AWE недоступны для служб Analysis Services. Если объем доступной физической памяти меньше, чем пространство виртуальных адресов пользовательского режима, то AWE включить нельзя. |
Одной из главных задач проектирования любой программной системы для баз данных является минимизация операций дискового ввода-вывода, поскольку чтение и запись на диск являются наиболее ресурсоемкими операциями. Серверы SQL Server создают в памяти буферные пулы для удержания страниц, считываемых из базы данных. Большой объем кода SQL Server предназначен для минимизации числа физических операций считывания и записи между диском и буферным пулом. SQL Server пытается найти оптимальное соотношение при достижении двух целей:
предотвращения роста буферного пула до размера, при котором вся система будет испытывать нехватку оперативной памяти;
минимизации числа физических операций ввода-вывода в базе данных путем увеличения размера буферного пула.
Дополнительные сведения см. в разделе Управление буферами.
По умолчанию все выпуски SQL Server 2005 динамически управляют памятью для каждого экземпляра. Существуют отличия в том, как SQL Server управляет AWE-памятью в Windows 2000 и в более поздних версиях этой операционной системы.
Примечание |
---|
В сильно загруженной системе некоторые масштабные запросы, для выполнения которых требуется большой объем оперативной памяти, не могут получить минимально необходимого им объема и в результате завершаются ошибкой, когда истекает время ожидания ресурса памяти. Для решения этой проблемы следует увеличить значение параметра query wait. В случае параллельных запросов следует рассмотреть возможность уменьшения значения параметра max degree of parallelism. |
Примечание |
---|
В сильно загруженной системе с ограниченными ресурсами памяти запросы, содержащие соединение слиянием, сортировку и построение битовой карты в плане запроса, могут удалить битовую карту, если запрос не получил минимально необходимого для ее сохранения объема оперативной памяти. Это может повлиять на производительность запроса, и, если процесс сортировки не помещается в памяти, приводит к повышению интенсивности использования рабочих таблиц в базе данных tempdb, вызывая тем самым ее рост. Для решения этой проблемы необходимо увеличить объем физической памяти или настроить запросы так, чтобы они использовали другие, более быстрые планы запроса. Дополнительные сведения о настройке см. в разделах Оптимизация производительности базы данных tempdb и Как настроить базу данных. |
Выделение SQL Server максимального объема памяти
С помощью AWE и разрешения Закрепление страниц в памяти компоненту SQL Server Database Engine можно выделять следующие объемы памяти.
32-разрядная версия |
64-разрядная версия |
|
---|---|---|
Обычная память |
Все выпуски SQL Server: до достижения предела обработки виртуального адресного пространства —
|
Все выпуски SQL Server: до достижения предела обработки виртуального адресного пространства —
Примечание
Для Windows Server 2003 существует ограничение 512 ГБ, а для Windows Server 2003 с пакетом обновления 1 (SP1) ограничение составляет 1 ТБ. Если Windows поддерживает дополнительную память, SQL Server может достичь приведенных в списке пределов.
|
Механизм AWE (позволяет SQL Server выходить за пределы обработки виртуального адресного пространства на 32-разрядной платформе). |
Выпуски SQL Server Standard, Enterprise и Developer: буферный пул, достаточный для доступа к 64 ГБ памяти. |
Неприменимо3. |
Разрешение операционной системы закреплять страницы в памяти (разрешает блокировать физическую память, предотвращает разбиение блокированной памяти на страницы)4. |
Выпуски SQL Server Standard, Enterprise и Developer: требуется для процесса SQL Server для использования механизма AWE. Память, распределенная с использованием механизма AWE, не может быть выгружена. Предоставление данного разрешения без включения AWE не оказывает влияния на сервер. |
Выпуски SQL Server Enterprise и Developer: рекомендуется, чтобы избежать выгрузки страниц операционной системой. В зависимости от рабочей нагрузки может улучшить производительность. Объем доступной памяти аналогичен объему в случае обычной памяти. |
1**/3gb** — это параметр загрузки операционной системы. Дополнительные сведения см. в библиотеке MSDN.
2 WOW (Windows on Windows 64) — режим, в котором 32-разрядная версия SQL Server запускается в 64-разрядной операционной системе. Дополнительные сведения см. в библиотеке MSDN.
3 Обратите внимание, что параметр awe enabled функции sp_configure в 64-разрядной системе SQL Server присутствует, но не учитывается. Он будет исключен в будущих 64-разрядных версиях или пакетах обновления SQL Server.
4 В случае выдачи разрешения на закрепление страниц в памяти (либо в 32-разрядной системе для поддержки AWE-памяти, либо в 64-битной системе), рекомендуется выделить максимальный объем серверной памяти. Дополнительные сведения см. в разделе Параметры памяти сервера.