Сбор мусора

Microsoft.SQLServer.2014.Monitor.DBFileGroupFx.GarbageCollectionState (UnitMonitor)

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

Knowledge Base article:

Сводка

Этот монитор переходит в критическое состояние и создает предупреждение, если коэффициент заполнения сборщика мусора (пространство, занятое активными строками в файлах оптимизированных для памяти данных, выраженное в процентах от размера файлов данных) опускается ниже установленного порогового значения.

Коэффициент заполнения сборщика мусора для файловой группы данных, оптимизированных для памяти, — это метрика, которая показывает средний коэффициент заполнения среди всех активных файлов данных или разностных файлов, содержащих вставленные или удаленные строки. Если эта метрика имеет значение ниже 50 %, это означает, что происходит отставание автоматического слияния. Этот факт не требует каких-либо неотложных действий, пока количество пар файлов контрольных точек не превышает 8000 и в файловой группе, оптимизированной для памяти, доступно достаточное количество места для хранения.

Более подробную информацию можно найти в разделе документации sys.dm_db_xtp_checkpoint_files (Transact-SQL)

http://go.microsoft.com/fwlink/?LinkId=799249

Раздел "Как работает сборщик мусора" расположен в статье "Создание и управление хранилищем для оптимизированных для памяти объектов"

http://go.microsoft.com/fwlink/?LinkId=799250

Причины

Слияние пар файлов контрольных точек запускается на основе внутренней политики слияния. Дополнительные сведения см. в этой статье.

Решения

Выполните вручную слияние и принудительный сбор мусора, как описано в следующих статьях:

.

Переопределяемые параметры

Название

Описание

Значение по умолчанию

Приоритет предупреждения

Определяет приоритет предупреждения.

Обычные

Серьезность предупреждения

Определяет серьезность предупреждения.

Ошибка

Включено

Включает или отключает рабочий процесс.

Да

Создает предупреждения

Определяет, создает ли рабочий процесс предупреждения.

Да

Интервал (в секундах)

Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс.

900

Задержка скрипта (в миллисекундах)

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

0

Время синхронизации

Время синхронизации указывается в 24-часовом формате и может быть опущено.

00:04

Порог

Собранное значение будет сравниваться с этим параметром.

50

Время ожидания (в секундах)

Определяет время, в течение которого возможно выполнение рабочего процесса перед закрытием и пометкой как сбойный.

300

Element properties:

TargetMicrosoft.SQLServer.2014.DBFileGroupFx
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.MonitorType.DBFileGroupFx.GarbageCollectionState
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2014: коэффициент заполнения сборщика мусора для данных, оптимизированных для памяти, слишком низкий.
Среднее значение коэффициента заполнения среди всех активных файлов данных или разностных файлов слишком мало.
Сервер: {1}
Экземпляр SQL Server: {0}
База данных: {2}
Файловая группа: {3}
Коэффициент заполнения: {4} \%
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.Monitor.DBFileGroupFx.GarbageCollectionState" Target="SQL2014Core!Microsoft.SQLServer.2014.DBFileGroupFx" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2014.MonitorType.DBFileGroupFx.GarbageCollectionState" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Monitor.DBFileGroupFx.GarbageCollectionState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.Database"]/DatabaseName$</AlertParameter3>
<AlertParameter4>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.FileGroup"]/GroupName$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='StorageUsageFillFactor']$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Critical" MonitorTypeStateID="Critical" HealthState="Error"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</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>
<DatabaseName>$Target/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.Database"]/DatabaseName$</DatabaseName>
<Value>Property[@Name='StorageUsageFillFactor']</Value>
<Threshold>50</Threshold>
<TimeoutSeconds>300</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
</Configuration>
</UnitMonitor>