Configuration de la mise à jour automatique des statistiques en mode asynchrone

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

Surveille le paramètre Mise à jour automatique des statistiques en mode asynchrone pour la base de données. Remarque : Ce moniteur est désactivé par défaut. Utilisez des remplacements pour l'activer en cas de besoin.

Knowledge Base article:

Récapitulatif

Ce moniteur vérifie le paramètre Mise à jour automatique des statistiques en mode asynchrone de cette base de données. Comme ce moniteur entre dans le cadre d'une exigence de standards globale, une alerte est générée si le paramètre ne répond pas au standard spécifié.

Configuration

Quand le paramètre Mise à jour automatique des statistiques en mode asynchrone est activé, les mises à jour des statistiques pour l'option AUTO_UPDATE_STATISTICS sont asynchrones. L'optimiseur de requête n'attend pas la mise à jour des statistiques pour compiler les requêtes. L'activation de cette option n'a aucun impact sauf si AUTO_UPDATE_STATISTICS est défini sur ON.

AUTO_UPDATE_STATISTICS_ASYNC {ON | OFF}

Causes

Une alerte d'avertissement est déclenchée si l'option ne correspond pas au paramètre requis. Tel qu'il livré, le moniteur est configuré pour émettre une alerte quand ce paramètre est défini sur « ON ».

Cette option de base de données est désactivée par défaut pour des raisons de compatibilité descendante avec les applications existantes. Comme les requêtes n'attendent pas ni ne bloquent la mise à jour des statistiques, les performances peuvent être temporairement affectées si une requête est compilée et exécutée avec d'anciennes statistiques. Après la mise à jour des statistiques, la même requête doit être recompilée en tenant compte des statistiques mises à jour avant la prochaine exécution. En revanche, pendant la mise à jour des statistiques, la requête peut rencontrer des problèmes temporaires de performances puisqu'elle a été compilée à partir d'anciennes statistiques.

La mise à jour ASYNC est probablement le meilleur choix pour la plupart des applications, car elle réduit globalement les blocages et le temps d'attente. Activez ce paramètre et, s'il fonctionne pour votre application, désactivez ce moniteur d'unités.

Résolutions

Ce problème peut être résolu en :

Sinon, si ce moniteur ne concerne pas cette base de données :

Externe

Consultez les informations détaillées de ce paramètre : Options ALTER DATABASE SET (Transact-SQL)

Consultez également l'article «  Utilisation des statistiques pour améliorer les performances de requête ».

Paramètres remplaçables

Nom

Description

Valeur par défaut

Priorité d'alerte

Définit la priorité de l'alerte.

Normale

Gravité d'alerte

Définit la gravité de l'alerte.

Avertissement

Activé

Active ou désactive le flux de travail.

Non

Valeur attendue

Valeur attendue du paramètre de configuration de la base de données. Pour voir l’ensemble des valeurs applicables, consultez la section « Configuration » de l’article de la Base de connaissances de ce moniteur.

DÉSACTIVÉ

Génère des alertes

Définit si le flux de travail génère une alerte.

Oui

Intervalle (en secondes)

Intervalle régulier (en secondes) auquel exécuter le flux de travail.

43200

Heure de synchronisation

Heure de la synchronisation spécifiée selon un format de 24 heures. Peut être omise.

 

Délai d'expiration (secondes)

Spécifie la durée pendant laquelle le flux de travail est autorisé à s'exécuter avant d'être fermé et marqué comme ayant échoué.

300

Délai d’attente pour la connexion de base de données (secondes)

Le workflow échoue et enregistre un événement s’il ne peut pas accéder à la base de données pendant la période spécifiée.

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 sur Linux : Erreur de configuration de la mise à jour automatique des statistiques en mode asynchrone
Le paramètre Mise à jour automatique des statistiques en mode asynchrone de la base de données « {0} » dans l'instance SQL « {1} » sur l'ordinateur « {2} » n'est pas défini conformément aux bonnes pratiques.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Linux.Monitor.Database.AutoUpdateStatAsyncConfiguration" 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.AutoUpdateStatAsyncConfiguration.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>AutoUpdateStatAsync</ConfigName>
<ExpectedValue>OFF</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>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>