Espérance de vie d'une page

Microsoft.SQLServer.Windows.Monitor.DBEngine.PageLifeExpectancy (UnitMonitor)

Espérance de vie d'une page (s) du moteur de base de données

Knowledge Base article:

Résumé

L'espérance de vie d'une page est le nombre de secondes que la page reste dans le pool de mémoires tampons sans référence. Si l'espérance de vie d'une page est élevée, cela signifie que les données demandées sont disponibles dans le cache et qu'il est inutile d'accéder au disque dur.

Causes

Si l'espérance de vie d'une page est extrêmement faible, cela peut être une indication de :

Mémoire insuffisante sur le système

Mémoire insuffisante configurée pour l'utilisation de SQL Server

Conception d'index médiocre

Résolutions

Examinez le système d'E/S pour vérifier comment il gère la charge, si les valeurs des compteurs Moyenne disque s/lecture et Moyenne disque s/écriture pour l'objet PhysicalDisk sont élevées (généralement supérieure à 10 ms), cela signifie que votre système est peut-être surchargé ou que vous devez améliorer les requêtes ou les index.

Le pool de mémoires tampons est peut-être surchargé, car SQL Server utilise simultanément un grand nombre de tables ou une analyse complète est utilisée au lieu d'une recherche par critères. Consultez le compteur SQL Server:Méthodes d'accès:Analyses complètes par seconde pour vérifier le problème.

Vous pouvez utiliser SQL Server Profiler et parcourir les statistiques de plan d'exécution de requêtes dans la catégorie Performances pour rechercher l'application à l'origine de l'analyse complè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.

Erreur

Activé

Active ou désactive le flux de travail.

Oui

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.

300

Nombre d'échantillons

Indique le nombre de dépassements de seuil d'une valeur mesurée avant que l'état soit changé.

6

Heure de synchronisation

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

 

Seuil

La valeur collectée sera comparée avec ce paramètre.

300

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é.

200

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.Windows.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.DBEngine.PageLifeExpectancy
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL sur Windows : L'espérance de vie d'une page du moteur de base de données est trop faible
L'espérance de vie d'une page de l'instance SQL « {0} » sur l'ordinateur « {1} » est trop basse. Consultez l'onglet « Contexte de l'alerte » pour plus de détails.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.DBEngine.PageLifeExpectancy" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.DBEngine.PageLifeExpectancy" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.DBEngine.PageLifeExpectancy.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<Threshold>300</Threshold>
<NumSamples>6</NumSamples>
<TimeoutSeconds>200</TimeoutSeconds>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<PerformanceCounterObject>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/PerformanceCounterObject$</PerformanceCounterObject>
</Configuration>
</UnitMonitor>