Монитор переходит в критическое состояние и создает предупреждение, когда объем используемой пулом ресурсов памяти превышает заданное пороговое значение, выраженное в процентах от памяти, доступной для оптимизированных для памяти таблиц, для данного пула ресурсов.
Монитор переходит в критическое состояние и создает предупреждение, когда объем используемой пулом ресурсов памяти превышает заданное пороговое значение, выраженное в процентах от памяти, доступной для оптимизированных для памяти таблиц, для данного пула ресурсов.
Именованный пул ресурсов при сопоставлении с базой данных с таблицами, оптимизированными для памяти, отслеживает память, выделяемую всем таблицам, оптимизированным для памяти, включая внутренние таблицы, используемые для различных структур механизма оптимизированных для памяти данных.
SQL Server с оптимизированными для памяти данными использует память в большем объеме и иначе, чем SQL Server. Может оказаться, что объема памяти, установленного и выделенного для оптимизированных для памяти данных, станет недостаточно для удовлетворения ваших растущих потребностей. В этом случае вы можете столкнуться с нехваткой памяти.
Дополнительные сведения см. в статье Связывание базы данных с таблицами, оптимизированными для памяти, с пулом ресурсов.
Для решения проблемы малого объема или нехватки памяти необходимо либо освободить существующую память, сократив ее использование, либо выделить больше доступной памяти для оптимизированных для памяти таблиц. Возможные действия по решению проблемы могут включать следующее:
Проверьте, не препятствует ли длительная транзакция сборке мусора в памяти. Если это так, попробуйте завершить транзакцию и оптимизировать приложение, сократив длительность транзакций.
Освобождение существующей памяти.
Удалите строки в таблице, оптимизированной для обработки в памяти, которые неважны, и подождите сборки мусора.
Перенос одной строки или нескольких в таблицу на диске.
Увеличьте значение MAX_MEMORY_PERCENT в пуле ресурсов.
Увеличить память в экземпляре SQL Server можно, увеличив значение максимального объема памяти сервера.
Установка дополнительной памяти.
Управление памятью для оптимизированных для памяти данных
Имя | Описание | Значение по умолчанию |
Приоритет предупреждения | Определение приоритета оповещений. | Обычный |
Серьезность предупреждения | Определяет серьезность предупреждения. | Ошибка |
Включено | Включает или отключает рабочий процесс. | Да |
Создает предупреждения | Определяет, создается ли предупреждение рабочим процессом. | Да |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, в который следует запустить рабочий процесс. | 900 |
Число выборок | Показывает, сколько раз измеряемое значение должно пересечь пороговое значение для того, чтобы состояние изменилось. | 6 |
Время синхронизации | Время синхронизации указывается в 24-часовом формате и может быть опущено. |
|
Пороговое значение | Собранное значение будет сравниваться с этим параметром. | 90 |
Время ожидания (в секундах) | Указывает время, в течение которого может выполняться рабочий процесс, прежде чем он будет закрыт или завершится сбоем. | 300 |
Время ожидания для подключения к базе данных (секунды) | Рабочий процесс завершится ошибкой и зарегистрирует событие, если он не сможет получить доступ к базе данных за указанный промежуток времени. | 15 |
Target | Microsoft.SQLServer.Windows.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.Windows.MonitorType.UserResourcePool.MemoryConsumption | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption" Target="SqlDiscW!Microsoft.SQLServer.Windows.UserResourcePool" ParentMonitorID="Health!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.Windows.MonitorType.UserResourcePool.MemoryConsumption" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.ResourcePool"]/Name$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ErrorState" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="SuccessState" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<Threshold>90</Threshold>
<NumSamples>6</NumSamples>
<PoolName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.ResourcePool"]/Name$</PoolName>
</Configuration>
</UnitMonitor>