Максимальный объем памяти в SQL Server


11

Я использую SQL Server 2008 и веб-приложение на одном выделенном сервере с доступной только 2 ГБ памяти.

Как отмечалось в другом месте, SQL Server регулярно занимает до 98% физической памяти, что замедляет работу веб-приложения на сервере.

В разделе «Свойства сервера в SSMS» в разделе «Память» для параметра Максимальная память сервера (в Мб) задано значение: 2147483647. Sql Server

Мой вопрос заключается в том, что было бы рекомендованным числом в поле максимальной памяти сервера, учитывая объем доступной памяти, и что тот же сервер также выполняет веб-приложение?

Кроме того, безопасно ли вносить изменения в этот номер во время работы SQL Server?

Спасибо за совет.


2
Недавняя статья, которую я написал о чрезмерной фиксации памяти на серверах SQL, может быть полезна для чтения.
Джон Зигель

Ответы:


13

Сначала я отвечу на последний вопрос: Да, вы можете изменить его, пока сервер работает без проблем. Если вы хотите изменить значение с помощью SQL, вы можете сделать это с помощью следующего запроса

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

Смотрите эту страницу для более подробной информации о настройке памяти на сервере SQL.


Ваш первый вопрос, к сожалению, ответ: я не могу вам сказать, я не там.

При распределении памяти необходимо учитывать 1 000 000 вещей. Насколько велики наборы результатов запросов, как часто они выполняются, будет ли запрос, который раньше занимал 20 мс, нормально, теперь занимает 200 мс?

По умолчанию Sql предполагает, что это единственная вещь, работающая на сервере, поэтому он просто устанавливает память в MAX_VALUE и перестает расти, когда используется вся доступная память (и на выделенном оборудовании, которое достаточно близко к тому, что вы хотите, чтобы происходило (см. Комментарий Аарона для возможного предостережения)). Обычно любой веб-сервер или другое программное обеспечение, взаимодействующее с базой данных, будет работать на другом оборудовании, взаимодействующем с ней по сети.

Вам просто нужно просто установить значение, которое вы считаете нормальным, и, если ваш веб-сервер все еще остается в памяти, уменьшите его. Если SQL не дает вам достаточной производительности после того, как вы предоставите веб-серверу необходимую ему память, вам нужно будет либо купить больше оперативной памяти, либо перенести SQL на выделенное оборудование.


2
В SSMS есть хороший отчет о памяти сервера SQL: blogs.msdn.com/b/buckwoody/archive/2007/10/17/… Вы можете отследить, какая часть
потребляет

1

Вы никогда не должны позволять серверу sql занимать всю память на блоке. Это зависит от того, что работает на этом блоке и сколько памяти у блока, но я всегда гарантирую, что оставляю 10% памяти для O \ S.


0

В моей нынешней компании, где меня нанимают, я всегда использую минимальные и максимальные настройки для SQL Server. Максимум, если сервер используется только для SQL Server, я всегда устанавливаю в MAX памяти - 1 ГБ для ОС. Минимум в нашем случае на 2Гб.

Но это доказано для наших установок. Не все установки и использование одинаковы, и я все еще чувствую, что память всегда не делает то, что вы хотите;)

Может быть, известная вещь в вашем случае, но также посмотрите на обмен памятью. Если на сервере только 2 ГБ, а операционная система и SQL Server работают в режиме «высокой нагрузки», потребление памяти будет слишком высоким, когда ОС будет склонна к некоторой перестановке. Убедитесь, что ваши файлы подкачки не находятся на диске ОС, иначе у вас может получиться полностью заблокированная система (была там раньше и не понравилась)


-1

Я только что изменил «max server memory» на живом сервере без проблем. Похоже, что он установлен как 2147483647 по умолчанию для всех баз данных (но я не знаю, как на самом деле прочитать его значение из SQL до изменения) ...


-2

Придерживайтесь значений по умолчанию в 99% случаев. Это позволит динамически управлять памятью.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.