Средняя длина цепочек строк в хэш-контейнерах

Microsoft.SQLServer.Windows.Monitor.DBFilegroupFx.HashIndexAvgChainLength (UnitMonitor)

Этот монитор проверяет количество пустых контейнеров хэш-индекса и среднюю длину цепочек строк в базе данных SQL.

Knowledge Base article:

Сводка

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

Конфигурация

Индексы используются для эффективного доступа к данным в таблицах SQL Server. Указание правильных индексов может значительно улучшить производительность запросов. Монитор создает предупреждение, если empty_bucket_percent больше порогового значения процента пустых контейнеров, а avg_chain_length больше порогового значения средней длины цепочки. Обнаружено слишком большое число дубликатов, и в данном случае более подходящим был бы индекс NONCLUSTERED.

Внешнее

Дополнительные сведения:

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

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

Имя

Описание

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

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

Определение приоритета оповещений.

Обычный

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

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

Предупреждение

Пороговое значение средней длины цепочки

Пороговое значение средней длины цепочки, которое указывает среднюю длину цепочек строк в хэш-контейнерах.

100

Отображение количества индексов

Счетчик ненастроенных индексов в соответствии с рекомендациями.

5

Пороговое значение процента пустых контейнеров

Пороговое значение процента пустых контейнеров, которое указывает количество пустых контейнеров в хэш-индексе.

10

Включено

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

Да

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

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

Да

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

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

43200

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

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

 

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

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

300

Время ожидания для подключения к базе данных (секунды)

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

15

Element properties:

TargetMicrosoft.SQLServer.Windows.DBFilegroupFx
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.DBFilegroupFx.HashIndexAvgChainLength
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL в Windows: ошибка средней длины цепочек строк в хэш-контейнерах
База данных "{0}" экземпляра SQL "{1}" на компьютере "{2}" содержит таблицы с индексами, в которых слишком много дубликатов. Поэтому индекс NONCLUSTERED был бы более подходящим. {3}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.DBFilegroupFx.HashIndexAvgChainLength" Accessibility="Public" Enabled="true" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBFilegroupFx" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.DBFilegroupFx.HashIndexAvgChainLength" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.DBFilegroupFx.HashIndexAvgChainLength.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='Status']$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</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>
<DatabaseName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<EmptyBucketPercentThreshold>10</EmptyBucketPercentThreshold>
<AvgChainLengthThreshold>100</AvgChainLengthThreshold>
<ErrorTopLines>5</ErrorTopLines>
</Configuration>
</UnitMonitor>