Configuración de actualización de estadísticas automática

Microsoft.SQLServer.Linux.Monitor.Database.AutoUpdateStatConfiguration (UnitMonitor)

Supervisa el valor Actualización de estadísticas automática de la base de datos. Nota: Este monitor está deshabilitado de forma predeterminada. Use invalidaciones para habilitarlo cuando sea necesario.

Knowledge Base article:

Resumen

Este monitor comprueba el valor de configuración Actualizar estadísticas automáticamente de esta base de datos. Debido a que este monitor forma parte de un requisito de estándares globales, se generará una alerta si la configuración no cumple el estándar especificado.

El optimizador de consultas necesita estadísticas actualizadas y precisas para generar buenos planes. En la mayoría de los casos, lo mejor es dejar que SQL Server realice el mantenimiento de las estadísticas. Si se activa “Crear estadísticas automáticamente” y “Actualizar estadísticas automáticamente”, depende del usuario que se mantengan actualizadas las estadísticas. De no hacerlo, el rendimiento de las consultas sería deficiente. La mayoría de las aplicaciones debe tener activadas estas opciones.

Configuración

Si el valor de Actualizar estadísticas automáticamente se establece en ON, el optimizador de consultas actualiza las estadísticas cuando son usadas por una consulta y parece que puedan estar obsoletas. Las estadísticas se vuelven obsoletas después de que operaciones de inserción, actualización, eliminación o combinación cambien la distribución de los datos en la tabla o la vista indexada. El optimizador de consultas determina cuándo han podido quedar obsoletas las estadísticas contando el número de modificaciones de datos desde la actualización más reciente de las estadísticas, comparando el número de modificaciones con respecto a un umbral. El umbral se basa en el número de filas de la tabla o la vista indexada. El optimizador de consultas comprueba que hay estadísticas obsoletas antes de compilar una consulta y antes de ejecutar un plan de consulta almacenado en la memoria caché. Antes de compilar una consulta, el optimizador de consultas utiliza las columnas, tablas y vistas indexadas en el predicado de consulta, para determinar qué estadísticas podrían estar obsoletas. Antes de ejecutar un plan de consulta almacenado en la memoria caché, el motor de base de datos comprueba que el plan de consulta hace referencia a las estadísticas actualizadas. La opción AUTO_UPDATE_STATISTICS se aplica a las estadísticas creadas para índices y columnas únicas de los predicados de consulta, así como a las estadísticas creadas con la instrucción CREATE STATISTICS. Esta opción también se aplica a las estadísticas filtradas.

AUTO_UPDATE_STATISTICS {ON | OFF}

Causas

Se generará una alerta de advertencia si la opción no coincide con el valor requerido. De forma predeterminada, el monitor está configurado para generar una alerta cuando este valor se establezca en "OFF".

Resoluciones

Para solucionar este problema puede:

Como alternativa, si este monitor no constituye un problema para esta base de datos:

Externo

Vea información más detallada sobre este valor: Opciones de ALTER DATABASE SET (Transact-SQL)

Consulte también el artículo “ Uso de estadísticas para mejorar el rendimiento de las consultas”.

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Prioridad de la alerta

Define la prioridad de alerta.

Normal

Gravedad de la alerta

Define la gravedad de alerta.

Advertencia

Habilitado

Habilita o deshabilita el flujo de trabajo.

No

Valor esperado

Se esperaba un valor de configuración de la base de datos. Para ver el conjunto de valores aplicables, consulte la sección "Configuración" del artículo de la knowledge base de este monitor.

Activado

Genera alertas.

Define si el flujo de trabajo genera una alerta.

Intervalo (segundos)

Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo.

43200

Hora de sincronización

Hora de sincronización especificada en un formato de 24 horas. Se puede omitir.

 

Tiempo de espera (segundos)

Especifica el tiempo que el flujo de trabajo se puede ejecutar antes de cerrarlo y marcarlo como erróneo.

300

Tiempo de expiración de la conexión de base de datos (segundos)

Se producirá un error en el flujo de trabajo y se registrará un evento si no puede obtener acceso a la base de datos durante el período especificado.

15

Element properties:

TargetMicrosoft.SQLServer.Linux.Database
Parent MonitorMicrosoft.SQLServer.Linux.Rollup.Database.AutomaticConfiguration
CategoryConfigurationHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Linux.MonitorType.Database.DBConfigurationStatus
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL en Linux: error de configuración de actualización de estadísticas automática
El valor de Actualizar estadísticas automáticamente de la base de datos "{0}" en la instancia de SQL "{1}" del equipo "{2}" no está establecido según el procedimiento recomendado.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Linux.Monitor.Database.AutoUpdateStatConfiguration" Accessibility="Public" Enabled="false" Target="SqlDiscL!Microsoft.SQLServer.Linux.Database" ParentMonitorID="Microsoft.SQLServer.Linux.Rollup.Database.AutomaticConfiguration" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Linux.MonitorType.Database.DBConfigurationStatus" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Linux.Monitor.Database.AutoUpdateStatConfiguration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</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>
<NetbiosComputerName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<ConfigName>AutoUpdateStat</ConfigName>
<ExpectedValue>ON</ExpectedValue>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>