sql server забирает всю оперативную память что делать

Наблюдение за использованием памяти

Проводите периодический мониторинг экземпляра SQL Server для подтверждения того, что память используется в допустимых пределах.

Настройка максимального размера памяти для SQL Server

По умолчанию экземпляр SQL Server может со временем использовать большую часть памяти, доступной операционной системе Windows на сервере. После занятия памяти она не высвобождается, пока не будет обнаружена нехватка памяти. Такое поведение является нормальным и не свидетельствует об утечке памяти в процессе SQL Server. Чтобы ограничить объем памяти, который сервер SQL Server может использовать в своих целях, задайте параметр max server memory. Дополнительные сведения см. в статье Руководство по архитектуре управления памятью.

В SQL Server на Linux установить ограничение памяти можно с помощью средства mssql-conf и параметра memory.memorylimitmb.

Наблюдение за памятью операционной системы

Для отслеживания нехватки памяти используйте приведенные ниже счетчики Windows. Значения многих счетчиков памяти операционной системы можно запрашивать с помощью динамических административных представлений sys.dm_os_process_memory и sys.dm_os_sys_memory.

Память: доступно байтов
Этот счетчик указывает на то, сколько байт памяти доступно на данный момент для использования процессами. Низкие значения счетчика Доступно байтов могут указывать на общую нехватку памяти операционной системы. Это значение можно запросить с помощью T-SQL из sys.dm_os_sys_memory.available_physical_memory_kb.

Память: страниц/с
Этот счетчик показывает число страниц, которые были или получены с диска из-за ошибок страниц физической памяти, или записаны на диск для освобождения пространства в рабочем множестве из-за ошибок страниц. Большое значение счетчика Страниц/с может означать излишнюю подкачку.

Память: ошибок страницы/с Этот счетчик показывает частоту ошибок страниц для всех процессов, включая системные. Низкий, но не нулевой уровень выгрузки на диск (и вызванные ею ошибки страниц) является нормальным, даже если у компьютера достаточно большое количество доступной памяти. Диспетчер виртуальной памяти (VMM) Microsoft Windows берет страницы из SQL Server и других процессов по мере того, как он урезает размеры рабочих множеств этих процессов. Деятельность VMM может привести к ошибкам страниц.

Процесс: ошибок страницы/с Этот счетчик показывает частоту ошибок страниц для определенного пользовательского процесса. С помощью счетчика Процесс: ошибок страниц/с можно определить, вызвана ли повышенная активность диска подкачкой, выполняемой сервером SQL Server. Чтобы определить, является ли SQL Server или другой процесс причиной излишней подкачки, наблюдайте за счетчиком Процесс: ошибок страниц/с для экземпляра процесса SQL Server.

Дополнительные сведения об устранении проблемы излишней подкачки см. в документации по операционной системе.

Изоляция памяти, используемой SQL Server

Для мониторинга использования памяти сервером SQL Server используйте приведенные ниже счетчики объектов SQL Server. Значения многих счетчиков объектов SQL Server можно запрашивать с помощью динамических административных представлений sys.dm_os_performance_counters и sys.dm_os_process_memory.

По умолчанию сервер SQL Server управляет требованиями к памяти динамически исходя из доступных ресурсов системы. Если SQL Server нужно больше памяти, он производит запрос к операционной системе, чтобы определить, доступна ли свободная физическая память, и использует ее. Если в операционной системе недостаточно свободной памяти, SQL Server будет освобождать память для операционной системы до тех пор, пока нехватка памяти не будет устранена или пока SQL Server не достигнет предела min server memory. Однако можно отказаться от динамического использования памяти, задав значения для параметров конфигурации сервера min server memory и max server memory. Дополнительные сведения см. в разделе Параметры памяти сервера.

SQL Server: Memory Manager: общая память сервера (КБ)
Этот счетчик показывает объем памяти операционной системы, выделенной в настоящее время серверу SQL Server диспетчером памяти SQL Server. Данное значение, как правило, увеличивается при повышении активности и растет после запуска SQL Server. Получить этот счетчик можно из столбца committed_kb динамического административного представления sys.dm_os_sys_info.

SQL Server: Memory Manager: память целевого сервера (КБ)
Этот счетчик показывает идеальный объем памяти для SQL Server в соответствии с рабочей нагрузкой за последнее время. Чтобы определить, выделен ли для сервера SQL Server оптимальный объем памяти, сравните это значение со счетчиком Общая память сервера по истечении некоторого периода работы со стандартной нагрузкой. Значения счетчиков Общая память сервера и Память целевого сервера должны быть примерно равны. Если значение Общая память сервера значительно меньше, чем значение Память целевого сервера, возможно, экземпляру SQL Server не хватает памяти. Через некоторое время после запуска SQL Server значение Общая память сервера возрастает. При этом значение Память целевого сервера должно быть больше, чем Общая память сервера. Получить этот счетчик можно из столбца committed_target_kb динамического административного представления sys.dm_os_sys_info. Дополнительные сведения и рекомендации по настройке памяти см. в статье Параметры конфигурации памяти сервера.

Процесс: рабочий набор
Этот счетчик показывает объем физической памяти, используемой процессом в настоящее время, согласно данным операционной системы. Обратите внимание на экземпляр этого счетчика для sqlservr.exe. Получить этот счетчик можно из столбца physical_memory_in_use_kb динамического административного представления sys.dm_os_process_memory.

Читайте также:  можно ли разбавлять гель лак и чем

Процесс: байт исключительного пользования
Этот счетчик показывает объем памяти операционной системы, запрошенный процессом для использования в собственных целях. Обратите внимание на экземпляр этого счетчика для sqlservr.exe. Так как этот счетчик учитывает все выделения памяти, запрошенные процессом sqlservr.exe, включая выходящие за пределы max server memory, его значение может превышать значение параметра max server memory.

SQL Server: Buffer Manager: страниц базы данных
Этот счетчик указывает число страниц с содержимым базы данных в буферном пуле. Память, не относящаяся к буферному пулу процесса SQL Server, не учитывается. Запросить этот счетчик можно из динамического административного представления sys.dm_os_performance_counters.

SQL Server: Buffer Manager: коэффициент попаданий в буферный кэш
Этот счетчик относится только к SQL Server. Желательно, чтобы коэффициент был не меньше 90. Значение выше 90 указывает на то, что более 90 процентов всех запрошенных данных были получены из кэша данных в памяти без считывания с диска. Дополнительные сведения о диспетчере буферов SQL Server см. в статье SQL Server, объект Buffer Manager. Запросить этот счетчик можно из динамического административного представления sys.dm_os_performance_counters.

SQL Server: Buffer Manager: ожидаемое время существования страницы
Этот счетчик измеряет, сколько секунд самая старая страница находится в буферном пуле. Для систем с архитектурой NUMA это среднее значение для всех узлов NUMA. Чем больше это значение, тем лучше. Его резкое падение указывает на постоянное обновление данных в буферном пуле, из-за которого рабочая нагрузка недостаточно эффективно использует данные, уже находящиеся в памяти. У каждого узла NUMA имеется собственный узел буферного пула. На серверах с несколькими узлами NUMA узнать ожидаемое время существования страницы для каждого узла буферного пула можно с помощью счетчика SQL Server: узел буфера: ожидаемое время существования страницы. Запросить этот счетчик можно из динамического административного представления sys.dm_os_performance_counters.

Примеры

Определение текущего распределения памяти

Приведенные ниже запросы возвращают сведения о текущем распределении памяти.

Определение текущего объема памяти, используемого сервером SQL Server

Приведенный ниже запрос возвращает сведения о текущем использовании памяти сервером SQL Server.

Источник

Sql server забирает всю оперативную память что делать

VM Reserved 33829304
VM Committed 30742368
AWE Allocated 0
Reserved Memory 1024
Reserved Memory In Use 0

VM Reserved 33823544
VM Committed 30736696
AWE Allocated 0
MultiPage Allocator 49344
SinglePage Allocator 4762328

VM Reserved 0
VM Committed 0
AWE Allocated 0
SM Reserved 0
SM Commited 0
SinglePage Allocator 68808
MultiPage Allocator 9016

��������, �� � �� ������ ������� ��� ���. 12 ��� 10, 14:30����[9088295] �������� | ���������� �������� ����������

Re: ����������� ������� [new]
sanches2
Member

������: ������
���������: 3116

sanches2
Aleksey-K
sanches2
������!
���� 1�, ��������� �������������� ����������. ������ ������� �������� ����� �����. ��� �� ���������� � �� ������������ SQL ������ �������� ������?
������� ���� � �������� tempdb, ����� �����, �� � ���� ���� �� �� ����� ����, � � ������ :).
����� ���������� ��� � SQL �������� ������� ��� � �������� ����� ��� ������������?

������� � DBCC MEMORYSTATUS.
� ���������, �������

VM Reserved 33829304
VM Committed 30742368
AWE Allocated 0
Reserved Memory 1024
Reserved Memory In Use 0

VM Reserved 33823544
VM Committed 30736696
AWE Allocated 0
MultiPage Allocator 49344
SinglePage Allocator 4762328

VM Reserved 0
VM Committed 0
AWE Allocated 0
SM Reserved 0
SM Commited 0
SinglePage Allocator 68808
MultiPage Allocator 9016

��������, �� � �� ������ ������� ��� ���.


� ���� ��� �� ���������! ������ ���� ��� ���� ����� ��� ��������� ������. �� ������ ��� ��� �������������. � ���������. ������� � ��� ����. ��������� ���� ���������� �� DBCC MEMORYSTATUS ��������� Buffer Counts. ����������, ��� � ��� �������� � ������� Committed � Target ���������.
� ������ ���� �����?
� ���������, �������
12 ��� 10, 14:37����[9088371] �������� | ���������� �������� ����������
Re: SQL ������� �������� 30 �������� ��� [new]
sanches2
Member

������:
���������: 108

Aleksey-K
sanches2
Aleksey-K
sanches2
������!
���� 1�, ��������� �������������� ����������. ������ ������� �������� ����� �����. ��� �� ���������� � �� ������������ SQL ������ �������� ������?
������� ���� � �������� tempdb, ����� �����, �� � ���� ���� �� �� ����� ����, � � ������ :).
����� ���������� ��� � SQL �������� ������� ��� � �������� ����� ��� ������������?

������� � DBCC MEMORYSTATUS.
� ���������, �������

VM Reserved 33829304
VM Committed 30742368
AWE Allocated 0
Reserved Memory 1024
Reserved Memory In Use 0

VM Reserved 33823544
VM Committed 30736696
AWE Allocated 0
MultiPage Allocator 49344
SinglePage Allocator 4762328

VM Reserved 0
VM Committed 0
AWE Allocated 0
SM Reserved 0
SM Commited 0
SinglePage Allocator 68808
MultiPage Allocator 9016

��������, �� � �� ������ ������� ��� ���.


� ���� ��� �� ���������! ������ ���� ��� ���� ����� ��� ��������� ������. �� ������ ��� ��� �������������. � ���������. ������� � ��� ����. ��������� ���� ���������� �� DBCC MEMORYSTATUS ��������� Buffer Counts. ����������, ��� � ��� �������� � ������� Committed � Target ���������.
� ������ ���� �����?
� ���������, �������

�������, � ���������� ��� ���������� DBCC MEMORYSTATUS. ������ ���� 9���. ��������, ��� ��� ������������ �������. �� ������ ����� ���������� �����������, ����� �� �� ������ 🙂

12 ��� 10, 14:42����[9088444] �������� | ���������� �������� ����������
Re: SQL ������� �������� 30 �������� ��� [new]
Glory
Member

������:
���������: 108

�������. ���������� ��� �����������.
12 ��� 10, 14:57����[9088606] �������� | ���������� �������� ����������
Re: SQL ������� �������� 30 �������� ��� [new]
Aleksey-K
Member

������: ������
���������: 3116

sanches2
Aleksey-K
sanches2
Aleksey-K
sanches2
������!
���� 1�, ��������� �������������� ����������. ������ ������� �������� ����� �����. ��� �� ���������� � �� ������������ SQL ������ �������� ������?
������� ���� � �������� tempdb, ����� �����, �� � ���� ���� �� �� ����� ����, � � ������ :).
����� ���������� ��� � SQL �������� ������� ��� � �������� ����� ��� ������������?

������� � DBCC MEMORYSTATUS.
� ���������, �������

VM Reserved 33829304
VM Committed 30742368
AWE Allocated 0
Reserved Memory 1024
Reserved Memory In Use 0

VM Reserved 33823544
VM Committed 30736696
AWE Allocated 0
MultiPage Allocator 49344
SinglePage Allocator 4762328

VM Reserved 0
VM Committed 0
AWE Allocated 0
SM Reserved 0
SM Commited 0
SinglePage Allocator 68808
MultiPage Allocator 9016

Источник

Устранение проблем нехватки памяти

Темы данного раздела

Раздел Обзор
устранить ошибки восстановления базы данных, возникающие из-за нехватки памяти Что делать при получении сообщения об ошибке «Операция восстановления базы данных ’ ’ завершилась сбоем из-за нехватки памяти в пуле ресурсов ’ ’.»
устранить влияния нехватки свободной памяти на рабочую нагрузку Что следует предпринять, если обнаружится, что недостаток памяти отрицательно влияет на производительность.
Устранение ошибок выделения страниц, возникших из-за нехватки памяти при наличии достаточных ресурсов памяти Что делать, если выдается сообщение об ошибке «Запрет распределения страниц для базы данных ’ ’ из-за нехватки памяти в пуле ресурсов ’ ’.» если объема доступной памяти достаточно для выполнения операции.
Рекомендации по использованию выполняющейся в памяти OLTP в среде виртуальных машин Что следует помнить при использовании выполняющейся в памяти OLTP в виртуализированной среде.

устранить ошибки восстановления базы данных, возникающие из-за нехватки памяти

При попытке восстановления базы данных можно получить следующее сообщение об ошибке: «Сбой операции восстановления для базы данных ’ ’ из-за нехватки памяти в пуле ресурсов ’ ’.» Это означает, что у сервера недостаточно памяти для восстановления базы данных.

Сервер, на который восстанавливается база данных, должен иметь достаточно памяти для оптимизированных для памяти таблиц в резервной копии базы данных, в противном случае база данных не подключится к сети и будет помечена как подозрительная.

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

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

Увеличьте значение MAX_MEMORY_PERCENT.
Если база данных, как и рекомендуется, привязана к пулу ресурсов, то память, доступная для операции восстановления, регулируется параметром MAX_MEMORY_PERCENT. Если значение слишком мало, восстановление завершится со сбоем. В этом фрагменте кода значение параметра MAX_MEMORY_PERCENT для пула ресурсов PoolHk увеличивается до 70 % от установленной памяти.

Если сервер выполняется на ВМ и не выделен, установите такое же значение MIN_MEMORY_PERCENT, как и MAX_MEMORY_PERCENT.
Дополнительные сведения см. в статье Рекомендации по использованию выполняющейся в памяти OLTP в среде виртуальных машин.

Дополнительные сведения о максимальных значениях параметра MAX_MEMORY_PERCENT см в разделе Процент памяти, доступной для оптимизированных для памяти таблиц и индексов.

Увеличьте значение max server memory.
Дополнительные сведения о настройке параметра Макс. памяти сервера см. в разделе Параметры конфигурации сервера «Память сервера».

устранить влияния нехватки свободной памяти на рабочую нагрузку

Очевидно, проще всего вообще избегать ситуаций, связанных с нехваткой памяти. Помочь в этом может хорошее планирование и отслеживание. Однако даже самое хорошее планирование не гарантирует стабильной работы, и возникновение нехватки памяти всегда возможно. Для устранения этой ситуации необходимо выполнить два действия.

Откройте выделенное административное соединение

SQL Server предоставляет выделенное административное соединение (DAC). С помощью выделенного административного соединения администратор может обращаться к запущенному экземпляру ядра СУБД SQL Server для устранения неполадок на сервере, даже если сервер не отвечает на другие клиентские соединения. DAC доступны в программе sqlcmd и в среде SQL Server Management Studio.

Рекомендации по использованию DAC в SSMS или sqlcmd см. в разделе Диагностическое подключение для администраторов баз данных.

Примените действие по исправлению

Для устранения проблемы с нехваткой памяти необходимо либо освободить имеющуюся память путем сокращения объема ее использования, либо выделить дополнительный объем памяти таблицам в памяти.

Освобождение имеющейся памяти

Удаление неважных строк оптимизированных для памяти таблиц и ожидание выполнения сборки мусора

Можно удалить неважные строки из оптимизированной для памяти таблицы. Сборщик мусора делает объем памяти, используемый этими строками, доступным. Компонент In-memory OLTP выполняет сбор ненужных строк агрессивно. Однако долго выполняющаяся транзакция может помешать сбору мусора. Например, если имеется транзакция, которая выполняется в течение 5 минут, все версии строк, созданные из-за операций обновления или удаления во время выполнения транзакции, не подпадают под сборку мусора.

Переместить одну или несколько строк в таблице на диске

В следующих статьях TechNet представлены рекомендации по перемещению строк из таблиц, оптимизированных для памяти, в таблицы на диске.

Увеличение объема доступной памяти

Увеличение значения MAX_MEMORY_PERCENT для пула ресурсов

Увеличьте значение MAX_MEMORY_PERCENT.
В этом фрагменте кода значение параметра MAX_MEMORY_PERCENT для пула ресурсов PoolHk увеличивается до 70 % от установленной памяти.

Если сервер выполняется на ВМ и не выделен, установите такое же значение MIN_MEMORY_PERCENT, как и MAX_MEMORY_PERCENT.
Дополнительные сведения см. в статье Рекомендации по использованию выполняющейся в памяти OLTP в среде виртуальных машин.

Дополнительные сведения о максимальных значениях параметра MAX_MEMORY_PERCENT см в разделе Процент памяти, доступной для оптимизированных для памяти таблиц и индексов.

Установка дополнительной памяти

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

Если сервер выполняется на ВМ и не выделен, установите такое же значение MIN_MEMORY_PERCENT, как и MAX_MEMORY_PERCENT.
Дополнительные сведения см. в статье Рекомендации по использованию выполняющейся в памяти OLTP в среде виртуальных машин.

Устранение ошибок выделения страниц, возникших из-за нехватки памяти при наличии достаточных ресурсов памяти

Для устранения этой ошибки необходимо включить регулятор ресурсов.

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

Рекомендации по использованию выполняющейся в памяти OLTP в среде виртуальных машин

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

Предварительное выделение памяти

В виртуальной среде важными факторами для памяти являются более высокая производительность и расширенная поддержка. Необходимо иметь возможность как быстро выделять память виртуальным машинам в зависимости от их требований (пиковые и низкие нагрузки), так и исключить бесполезные траты памяти. Компонент Hyper-V Dynamic Memory делает выделение памяти между виртуальными машинами, выполняемыми на узле, и управление ею более гибким.

Некоторые рекомендации по виртуализации и управлению SQL Server необходимо скорректировать при виртуализации базы данных с таблицами, оптимизированными для памяти. При отсутствии оптимизированных для памяти таблиц есть две рекомендации.

Если следовать указанным выше рекомендациям, когда в базе данных есть оптимизированные для памяти таблицы, может выясниться, что попытка восстановить базу данных приводит к остановке базы данных в состоянии «Ожидание восстановления», даже если доступно достаточно памяти для восстановления базы данных. Причина в том, что при запуске выполняющаяся в памяти OLTP передает данные в память активнее, чем механизм выделения динамической памяти выделяет память базе данных.

Решение

Чтобы смягчить этот эффект, заранее выделите достаточную память, чтобы восстановить или перезапустить базу данных, а не минимальное значение, в расчете на то, что динамическая память выделит дополнительную память при необходимости.

Источник

Читайте также:  болит горло с правой стороны что это может быть
Информ портал о технике и не только