가비지 수집

Microsoft.SQLServer.2016.Monitor.DBFileGroupFx.GarbageCollectionState (UnitMonitor)

메모리 액세스에 최적화된 데이터 파일의 활성 행에서 사용 중인 공간 크기가 데이터 파일 크기 비율로 표현되는 임계값 설정 아래로 떨어질 경우 모니터가 위험 상태를 보고하고 알림을 발생시킵니다. 참고: 이 모니터는 기본적으로 사용하지 않도록 설정되어 있습니다. 필요한 경우 재정의를 통해 사용하도록 설정하세요.

Knowledge Base article:

요약

가비지 수집기 채우기 비율(데이터 파일 크기 비율로 표현되는, 메모리 액세스에 최적화된 데이터 파일의 활성 행에서 사용 중인 공간 크기)이 임계값 설정 아래로 떨어질 경우 이 모니터가 위험 상태를 보고하고 알림을 발생시킵니다.

메모리 액세스에 최적화된 데이터 파일 그룹의 가비지 수집 채우기 비율은 삽입/삭제된 행이 포함된 모든 활성 데이터/델타 파일의 평균 채우기 비율을 나타내는 메트릭입니다. 이 메트릭이 50% 미만인 경우 자동 병합이 지연되었음을 나타냅니다. CFP(검사점 파일 쌍) 수가 8000 미만이며 메모리 액세스에 최적화된 데이터 파일 그룹에 사용 가능한 저장소가 많이 있는 경우 즉각적인 문제의 원인이 아닙니다.

참고: 이 모니터는 기본적으로 사용하지 않도록 설정되어 있습니다. 필요한 경우 재정의를 통해 사용하도록 설정하세요.

sys.dm_db_xtp_checkpoint_files(Transact-SQL) 설명서에서 보다 자세한 정보를 확인할 수 있습니다.

http://go.microsoft.com/fwlink/?LinkId=799285

'가비지 수집 작동 방식' 섹션은 '메모리 액세스에 최적화된 개체의 저장소 만들기 및 관리' 항목에서 확인할 수 있습니다.

http://go.microsoft.com/fwlink/?LinkId=799286

원인

CFP 병합은 내부 병합 정책에 따라 시작됩니다. 자세한 내용은 이 문서를 참조하세요.

해결 방법

다음 문서에 설명된 대로 수동 병합을 수행하고 가비지 수집을 강제로 실행하십시오.

.

재정의 가능한 매개 변수

이름

설명

기본값

알림 우선 순위

알림 우선 순위를 정의합니다.

보통

알림 심각도

알림 심각도를 정의합니다.

오류

사용

워크플로를 사용하거나 사용하지 않도록 설정합니다.

아니요

알림 생성

워크플로가 알림을 생성하는지를 정의합니다.

간격(초)

워크플로를 실행하는 반복 시간 간격(초)입니다.

900

스크립트 지연(밀리초)

이 매개 변수는 워크플로에서 실행되는 연속 T-SQL 쿼리 사이의 지연을 설정합니다. 대상 개체 수가 많은 경우 워크플로가 생성하는 사용 공간을 줄이는 데 도움이 될 수 있습니다. 이 매개 변수를 변경하려면 먼저 Microsoft 지원에 문의하십시오.

0

동기화 시간

24시간 형식으로 지정된 동기화 시간입니다. 생략될 수 있습니다.

00:05

임계값

수집된 값이 이 매개 변수와 비교됩니다.

50

제한 시간(초)

워크플로를 닫고 실패로 표시하기 전에 워크플로를 실행할 수 있는 시간을 지정합니다.

300

Element properties:

TargetMicrosoft.SQLServer.2016.DBFileGroupFx
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.MonitorType.DBFileGroupFx.GarbageCollectionState
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2016: 메모리 액세스에 최적화된 데이터 가비지 수집 채우기 비율이 너무 낮음
삽입/삭제 행이 포함된 모든 활성 데이터/델타 파일의 평균 채우기 비율이 너무 낮습니다.
서버: {1}
SQL Server 인스턴스: {0}
데이터베이스: {2}
파일 그룹: {3}
채우기 비율: {4}\%
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.Monitor.DBFileGroupFx.GarbageCollectionState" Target="SQL2016Core!Microsoft.SQLServer.2016.DBFileGroupFx" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2016.MonitorType.DBFileGroupFx.GarbageCollectionState" Accessibility="Public" Enabled="false" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Monitor.DBFileGroupFx.GarbageCollectionState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</AlertParameter3>
<AlertParameter4>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.FileGroup"]/GroupName$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='StorageUsageFillFactor']$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Critical" MonitorTypeStateID="Critical" HealthState="Error"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<ServerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</SqlInstanceName>
<DatabaseName>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</DatabaseName>
<Value>Property[@Name='StorageUsageFillFactor']</Value>
<Threshold>50</Threshold>
<TimeoutSeconds>300</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
</Configuration>
</UnitMonitor>