Как мне настроить память для нескольких экземпляров SQL Server?

9

У нас есть набор экземпляров SQL Server (2008 R2), которые работают на одном виртуальном сервере. Каждый экземпляр представляет этап в нашем цикле разработки (Dev / Test / Stage / etc.). Все экземпляры должны быть подключены к сети в любой момент времени, но нагрузка, как правило, изолируется от одного экземпляра в зависимости от того, где мы находимся в жизненном цикле выпуска.

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

Фил Сэндлер
источник
Если все экземпляры должны быть подключены к сети в любой момент времени, и вы установили максимальный объем памяти, SQL Server не освободит его. Когда вы говорите ... нагрузка изолирована для одного экземпляра как времени, значит ли это, что в других экземплярах нет активности? Кроме того, сколько экземпляров вы используете на виртуальной машине и какова конфигурация ЦП / памяти для виртуальной машины?
Kin Shah
3
Я писал об этом для нескольких экземпляров кластеров, где вам нужно настроить память в случае сбоя , что приводит к нескольким экземплярам на одном узле . Вы можете использовать подобный подход здесь, но вместо этого выполнять хранимые процедуры по требованию, которые реконфигурируют память в соответствии с текущей потребностью. Вы не сможете настроить каждый экземпляр так, чтобы он делал это автоматически, если вы просто не закрепите каждый из них в максимальном объеме памяти постоянно (а затем отрегулируете вручную, когда вам нужно).
Аарон Бертран

Ответы:

7

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

В зависимости от вашего использования и ваших уникальных обстоятельств ваши настройки могут отличаться, но обычно хорошей отправной точкой является установка максимального объема памяти сервера от 75 до 90 процентов, в зависимости от того, сколько у вас оперативной памяти. Гленн Берри поделился хорошим показателем несколько лет назад ЗДЕСЬ .

Если у вас есть несколько активных экземпляров на сервере, вам, возможно, придется разделить ресурсы между ними, например, если у вас 32 ГБ ОЗУ с 3 экземплярами, вы должны назначить около 9500 МБ каждому экземпляру. Когда вы используете только один экземпляр за раз, другие не освобождают используемую ими оперативную память. Вы можете освободить их оперативную память, остановив службу.

Когда у вас запущены другие приложения / службы, объем памяти, возможно, придется отрегулировать для их размещения.

РОКА
источник