Page Life Expectancy

Microsoft.SQLServer.2012.DBEngine.PageLifeExpectancyMonitor (UnitMonitor)

2012 DB エンジンのページの予測保持期間 (秒)

Knowledge Base article:

概要

Page Life Expectancy is number of seconds a page will stay in the buffer pool without references.High page life expectancy means that required data can be found in cache instead of going to hard drive.

原因

Extremely low Page Life Expectancy values can be an indication of:

Too small memory on the system

Too small memory configured for SQL Server’s use

Poor index design

解決方法

Check I/O system to verify how it handles the load, if values of Avg. Disk sec/Read and Avg. Disk sec/Write counters for object PhysicalDisk are high (usually higher than 10 msec.), it means your system may overloaded or opportunities exist for query and index improvement.

Buffer Pool can be overloaded because SQL Server works with high amount of tables simultaneously, or full scanning is used in place of search by criteria.Check SQL Server:Access Methods:Full Scans/sec counter to verify the problem.

You may use SQL Server Profiler and browse Showplan Statistics in the Performance category to find an application that cause full scanning.

Element properties:

TargetMicrosoft.SQLServer.2012.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.DBEngine.PageLifeExpectancy.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
SQL DB エンジン 2012 のページの予測保持期間が短すぎます
Page Life Expectancy of SQL instance "{0}" on computer "{1}" is too low.See "alert context" tab for more details.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.DBEngine.PageLifeExpectancyMonitor" Accessibility="Public" Enabled="true" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.DBEngine.PageLifeExpectancy.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.DBEngine.PageLifeExpectancyMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<Threshold>300</Threshold>
</Configuration>
</UnitMonitor>