Конфигурация асинхронного автоматического обновления статистики

Microsoft.SQLServer.Windows.Monitor.Database.AutoUpdateStatAsyncConfiguration (UnitMonitor)

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

Knowledge Base article:

Сводка

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

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

Если параметр автоматического асинхронного обновления статистики имеет значение ON, обновление статистики, заданное параметром AUTO_UPDATE_STATISTICS, выполняется асинхронно. Оптимизатор запросов не ожидает завершения обновления статистики перед компиляцией запросов. Задание для этого параметра значения ON не будет иметь эффекта, если параметр AUTO_UPDATE_STATISTICS не имеет значения ON.

AUTO_UPDATE_STATISTICS_ASYNC {ON | OFF}

Причины

Если параметр не соответствует требуемому значению, формируется предупреждение. Первоначально монитор настроен на создание предупреждения, если для этого параметра задано значение ON (Включено).

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

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

Разрешения

Эта проблема может быть устранена следующим образом:

Если же этот монитор не важен для этой базы данных:

Внешний

Дополнительные сведения об этих параметрах: Параметры ALTER DATABASE SET (Transact-SQL).

См. также " Использование статистики для повышения производительности запросов".

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

Имя

Описание

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

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

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

Обычный

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

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

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

Включено

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

Нет

Ожидаемое значение

Ожидаемое значение параметра конфигурации базы данных. Для просмотра набора допустимых значений обратитесь к разделу "Конфигурация" статьи базы знаний для этого монитора.

ВЫКЛ.

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

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

Да

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

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

43200

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

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

 

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

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

300

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

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

15

Element properties:

TargetMicrosoft.SQLServer.Windows.Database
Parent MonitorMicrosoft.SQLServer.Windows.Rollup.Database.AutomaticConfiguration
CategoryConfigurationHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.Database.DBConfigurationStatus
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL в Windows: ошибка конфигурации асинхронного автоматического обновления статистики
Параметр "Асинхронное автоматическое обновление статистики" для базы данных "{0}" в экземпляре SQL "{1}" на компьютере "{2}" настроен не в соответствии с рекомендациями.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Database.AutoUpdateStatAsyncConfiguration" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.Database" ParentMonitorID="Microsoft.SQLServer.Windows.Rollup.Database.AutomaticConfiguration" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Database.DBConfigurationStatus" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.Database.AutoUpdateStatAsyncConfiguration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ConfigurationValueOK" MonitorTypeStateID="ConfigurationValueOK" HealthState="Success"/>
<OperationalState ID="ConfigurationValueNotOK" MonitorTypeStateID="ConfigurationValueNotOK" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<ConfigName>AutoUpdateStatAsync</ConfigName>
<ExpectedValue>OFF</ExpectedValue>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>