SQL Server потребляет 87,5% оперативной памяти моего сервера. В последнее время это вызвало множество узких мест в производительности, таких как медлительность. Я исследовал эту проблему. Одно из распространенных решений, которое я мог найти в Интернете, - установить максимальный предел для SQL Server. Это было сделано, и много улучшений получено. Я хочу знать, почему, если максимальное значение памяти не установлено, почему SQL Server продолжает потреблять ресурсы
36
Ответы:
SQL Server будет использовать столько памяти, сколько вы позволите . По умолчанию это число будет охватывать 100% вашей числовой памяти на вашем компьютере. Вот почему вы видите то, что видите. Если вы предоставите SQL Server 24 ГБ памяти, то SQL Server сделает все возможное, чтобы использовать 24 ГБ памяти. Тогда у вас есть SQL Server и ОС, борющиеся за ресурсы, и это всегда приведет к снижению производительности.
Когда вы устанавливаете
max server memory
ограничение конфигурации, вы ограничиваете, сколько SQL Server может выделить для пула буферов (практически там, где хранятся страницы данных и кэш процедур). В SQL Server есть другие клерки памяти, поэтому для вашей конкретной версии (2008 R2 и ниже)max server memory
просто контролируется пул буферов. Но это всегда будет самый большой потребитель памяти.Справочник TechNet по влиянию минимальной и максимальной серверной памяти
Что касается вопроса о том, сколько памяти я должен оставить для ОС , это часто обсуждаемый показатель. Все зависит от того, какие другие процессы выполняются на сервере . При условии, что это действительно выделенный сервер (а это почти никогда не происходит). Мне нравится видеть как минимум 4 ГБ памяти для ОС (и даже больше для больших аппаратных блоков). Но самое главное, контролировать, сколько неиспользуемой памяти есть. Будьте либеральны и предоставьте SQL Server больше памяти, если вы замечаете много доступной (можно отслеживать с помощью perfmon) и неиспользуемой памяти (конечно, всегда оставляя небольшой буфер для этих угловых ситуаций).
источник
SQL Server по умолчанию предназначен для использования всей памяти на сервере. Причина этого заключается в том, что SQL Server кэширует данные в базе данных в оперативной памяти, чтобы он мог получать доступ к данным быстрее, чем он мог бы, если бы ему нужно было считывать данные с диска каждый раз, когда пользователь нуждался в этом. Если бы нам нужно было обращаться к дискам каждый раз, когда SQL Server требовал одних и тех же данных много раз, требования к вводу-выводу на диске были бы безумно высокими.
Обычно я рекомендую, чтобы люди оставляли около 4 ГБ ОЗУ для Windows, но это действительно зависит от объема программного обеспечения, работающего на сервере, от того, какие компоненты SQL Server вы используете (не все компоненты следуют этому параметру) и т. Д.
источник
Это работает мгновенно без необходимости перезапуска SQL:
Серверная память Параметры конфигурации сервера
Используйте две опции памяти сервера: минимальная память сервера и максимальная память сервера , чтобы перенастроить объем памяти (в мегабайтах), управляемый диспетчером памяти SQL Server для экземпляра SQL Server. По умолчанию SQL Server может динамически изменять требования к памяти в зависимости от доступных системных ресурсов.
Процедура настройки фиксированного объема памяти Чтобы установить фиксированный объем памяти:
Используйте параметры по умолчанию, чтобы позволить SQL Server динамически изменять требования к памяти в зависимости от доступных системных ресурсов. Значение по умолчанию для минимальной памяти сервера равно 0, а значение по умолчанию для максимальной памяти сервера - 2147483647 мегабайт (МБ).
Надеюсь, это поможет!
источник
Как сказал Эрик, вы должны управлять памятью, чтобы освободить место для других процессов. Для общего объяснения и некоторых советов о том, как установить максимальную память, проверьте сообщение Джонатана Кехайаса:
http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/
Вы можете изменить рекомендацию с учетом использования вашего сервера.
источник
SQL Server будет использовать доступную оперативную память, если вы не ограничите использование. Как правило, я стараюсь оставить не менее 2 ГБ свободного места для ОС, т. Е. Если у вас 64 ГБ физической оперативной памяти на хосте, ограничение SQL Server @ 62 ГБ.
http://msdn.microsoft.com/en-us/library/ms191144(v=sql.105).aspx
источник