У нас есть набор экземпляров SQL Server (2008 R2), которые работают на одном виртуальном сервере. Каждый экземпляр представляет этап в нашем цикле разработки (Dev / Test / Stage / etc.). Все экземпляры должны быть подключены к сети в любой момент времени, но нагрузка, как правило, изолируется от одного экземпляра в зависимости от того, где мы находимся в жизненном цикле выпуска.
SQL Server, кажется, захватывает и удерживает любой объем памяти, который мы установили в качестве максимального. Что я хотел бы знать, есть ли способ настроить экземпляры так, чтобы они были «умны» в отношении потребления памяти, чтобы они не блокировали друг друга при получении памяти при необходимости.
sql-server
sql-server-2008-r2
Фил Сэндлер
источник
источник
Ответы:
SQL Server будет использовать столько памяти, сколько вы можете использовать (в значительной степени), и всегда желательно устанавливать ограничение для каждого экземпляра. По умолчанию установлено значение 2147483647 МБ.
В зависимости от вашего использования и ваших уникальных обстоятельств ваши настройки могут отличаться, но обычно хорошей отправной точкой является установка максимального объема памяти сервера от 75 до 90 процентов, в зависимости от того, сколько у вас оперативной памяти. Гленн Берри поделился хорошим показателем несколько лет назад ЗДЕСЬ .
Если у вас есть несколько активных экземпляров на сервере, вам, возможно, придется разделить ресурсы между ними, например, если у вас 32 ГБ ОЗУ с 3 экземплярами, вы должны назначить около 9500 МБ каждому экземпляру. Когда вы используете только один экземпляр за раз, другие не освобождают используемую ими оперативную память. Вы можете освободить их оперативную память, остановив службу.
Когда у вас запущены другие приложения / службы, объем памяти, возможно, придется отрегулировать для их размещения.
источник