페이지 수명 예상

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

2008 DB 엔진의 페이지 수명 예상

Knowledge Base article:

요약

페이지 수명 예상은 페이지가 참조 없이 버퍼 풀에 남아 있는 시간(초)입니다. 페이지 수명 예상이 높으면 하드 드라이브로 이동하지 않고도 캐시에서 필요한 데이터를 찾을 수 있습니다.

원인

페이지 수명 예상 값이 매우 낮으면 다음과 같은 문제를 나타낼 수 있습니다.

시스템의 메모리 부족

SQL Server에 사용하도록 구성된 메모리가 너무 작음

인덱스 디자인이 잘못됨

해결 방법

I/O 시스템에서 부하 처리 방법을 확인합니다. PhysicalDisk 개체의 Avg. Disk sec/Read 및 Avg. Disk sec/Write 카운터 값이 높으면(일반적으로 10밀리초 이상), 시스템이 오버로드되었거나 쿼리 및 인덱스를 개선할 여지가 있음을 의미합니다.

SQL Server가 동시에 대량의 테이블을 작업하거나 조건별 검색 대신 전체 검색이 사용될 경우에는 버퍼풀이 발생할 수 있습니다. SQL Server:Access Methods:Full Scans/sec 카운터에서 문제를 확인합니다.

SQL Server Profiler를 사용하고 성능 범주에서 Showplan Statistics를 검색하여 전체 검색을 일으킨 응용 프로그램을 찾을 수 있습니다.

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBEngine.PageLifeExpectancy.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
SQL DB 2008 엔진 페이지 수명 예상이 너무 낮습니다.
"{1}" 컴퓨터에서 SQL 인스턴스 "{0}"의 페이지 수명 예상이 너무 낮습니다. 자세한 내용은 "경고 컨텍스트" 탭을 참조하십시오.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.DBEngine.PageLifeExpectancyMonitor" Accessibility="Public" Enabled="true" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBEngine.PageLifeExpectancy.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.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>300</IntervalSeconds>
<Threshold>300</Threshold>
<NumSamples>6</NumSamples>
</Configuration>
</UnitMonitor>