Монитор переходит в критическое состояние и создает предупреждение, когда объем используемой пулом ресурсов памяти превышает заданное пороговое значение, выраженное в процентах от памяти, доступной для оптимизированных для памяти таблиц, для данного пула ресурсов.
Монитор переходит в критическое состояние и создает предупреждение, когда объем используемой пулом ресурсов памяти превышает заданное пороговое значение, выраженное в процентах от памяти, доступной для оптимизированных для памяти таблиц, для данного пула ресурсов.
Именованный пул ресурсов при сопоставлении с базой данных, оптимизированной для памяти, отслеживает память, выделяемую всем таблицам, оптимизированным для памяти, включая внутренние таблицы, используемые для различных структур механизма оптимизированных для памяти данных.
SQL Server с оптимизированными для памяти данными использует память в большем объеме и иначе, чем SQL Server. Может оказаться, что объема памяти, установленного и выделенного для оптимизированных для памяти данных, станет недостаточно для удовлетворения ваших растущих потребностей. В этом случае вы можете столкнуться с нехваткой памяти.
Дополнительные сведения см. в статье Связывание базы данных с таблицами, оптимизированными для памяти, с пулом ресурсов.
Для решения проблемы малого объема или нехватки памяти необходимо либо освободить существующую память, сократив ее использование, либо выделить больше доступной памяти для оптимизированных для памяти таблиц. Возможные действия по решению проблемы могут включать следующее:
Проверьте, нет ли долго выполняемых транзакций, которые не позволяют выполнить сбор мусора в памяти. Если такие транзакции есть, попробуйте прекратить долго выполняющуюся транзакцию и (или) проверьте архитектуру приложения, чтобы узнать, можно ли сократить продолжительность выполнения операции.
Освободите существующую память.
Удалите не критичные к размещению в памяти строки таблицы и подождите сборки мусора.
Перенесите одну или несколько строк в таблицу на диске.
Увеличьте значение параметра MAX_MEMORY_PERCENT пула ресурсов.
Увеличьте объем памяти, доступной для экземпляра SQL Server, настроив значение параметра "Максимальный объем памяти сервера" в сторону увеличения.
Установите дополнительную память. Монитор создает предупреждение, когда объем доступного дискового пространства для контейнера файловой группы OLTP в памяти падает ниже порогового значения предупреждения, выраженного как процентное соотношение размера контейнеров файловой группы Memory OLTP плюс свободное дисковое пространство. Монитор создает критическое предупреждение, если доступное пространство становится меньше критического порогового значения.
Управление памятью для оптимизированных для памяти данных
Название | Описание | Значение по умолчанию |
Приоритет предупреждения | Определяет приоритет предупреждения. | Обычные |
Серьезность предупреждения | Определяет серьезность предупреждения. | Ошибка |
Включено | Включает или отключает рабочий процесс. | Да |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения. | Да |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 300 |
Число выборок | Показывает, сколько раз измеряемая величина должна пересечь пороговое значение, чтобы состояние изменилось. | 6 |
Задержка скрипта (в миллисекундах) | Этот параметр определяет задержку между последовательными запросами T-SQL, выполняемыми в рабочем процессе. Это может помочь уменьшить нагрузку, создаваемую рабочим процессом в случае большого числа целевых объектов. Пожалуйста, проконсультируйтесь со службой поддержки Майкрософт перед изменением этого параметра. | 0 |
Время синхронизации | Время синхронизации указывается в 24-часовом формате и может быть опущено. | 00:06 |
Порог | Собранное значение будет сравниваться с этим параметром. | 90 |
Время ожидания (в секундах) | Определяет время, в течение которого возможно выполнение рабочего процесса перед закрытием и пометкой как сбойный. | 180 |
Target | Microsoft.SQLServer.2014.UserResourcePool | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2014.MonitorType.UserResourcePool.MemoryConsumption | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2014.Monitor.UserResourcePool.MemoryConsumption" Target="SQL2014Core!Microsoft.SQLServer.2014.UserResourcePool" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2014.MonitorType.UserResourcePool.MemoryConsumption" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Monitor.UserResourcePool.MemoryConsumption.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ResourcePool"]/Name$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ErrorState" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="SuccessState" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<ServerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ServerRole"]/InstanceName$</SqlInstanceName>
<Value>$Data/Property[@Name='PoolUsedMemoryPercent']$</Value>
<PoolID>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ResourcePool"]/PoolID$</PoolID>
<Threshold>90</Threshold>
<TimeoutSeconds>180</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
<NumSamples>6</NumSamples>
</Configuration>
</UnitMonitor>