통계 자동 업데이트 구성

Microsoft.SQLServer.2008.Database.Configuration.AutoUpdateSet (UnitMonitor)

데이터베이스의 통계 자동 업데이트 설정을 모니터링합니다.

Knowledge Base article:

요약

이 모니터는 이 데이터베이스의 통계 자동 업데이트 설정을 확인합니다. 이 모니터는 전체 표준 요구 사항에 포함되므로 설정이 지정된 표준과 맞지 않으면 경고가 발생합니다.

좋은 계획을 수립하려면 쿼리 최적화 프로그램에 정확한 최신 통계가 필요합니다. 대부분의 경우 SQL Server에서 자동으로 통계를 유지 관리하는 것이 좋습니다. "통계 자동 작성" 및 "통계 자동 업데이트"를 해제하면 사용자가 직접 통계를 최신 상태로 유지해야 합니다. 그렇게 하지 못하면 쿼리 성능이 저하됩니다. 대부분의 응용 프로그램에서는 이러한 옵션을 ON으로 설정해야 합니다.

구성

통계 자동 업데이트 설정이 ON이면 쿼리에서 통계를 사용하거나 통계가 최신이 아닐 때 쿼리 최적화 프로그램에서 통계를 업데이트합니다. 삽입, 업데이트, 삭제 또는 병합 작업을 통해 테이블이나 인덱싱된 뷰의 데이터 분포가 변경되면 통계 내용이 더 이상 최신이 아니게 됩니다. 쿼리 최적화 프로그램은 마지막 통계 업데이트 이후 데이터 수정 개수를 계산한 다음 이 수를 임계값과 비교하여 통계가 최신이 아니게 된 시점을 결정합니다. 임계값은 테이블 또는 인덱싱된 뷰의 행 수를 기준으로 합니다. 쿼리 최적화 프로그램은 쿼리를 컴파일하기 전과 캐시된 쿼리 계획을 실행하기 전에 최신이 아닌 통계가 있는지를 확인합니다. 쿼리 최적화 프로그램은 쿼리를 컴파일하기 전에 쿼리 조건자의 열, 테이블 및 인덱싱된 뷰를 사용하여 어떤 통계가 최신이 아닌지 결정합니다. 데이터베이스 엔진에서는 캐시된 쿼리 계획을 실행하기 전에 쿼리 계획에서 최신 통계가 참조되는지 확인합니다. AUTO_UPDATE_STATISTICS 옵션은 인덱스에 대해 생성된 통계, 쿼리 조건자의 단일 열 및 CREATE STATISTICS 문을 사용하여 생성된 통계에 적용됩니다. 이 옵션은 또한 필터링된 통계에 적용됩니다.

AUTO_UPDATE_STATISTICS {ON | OFF}

원인

이 옵션이 필요한 설정과 일치하지 않으면 경고가 발생합니다. 기본적으로 이 모니터는 이 설정이 “OFF”로 설정될 때 경고를 발생시키도록 구성되어 있습니다.

해결 방법

이 문제는 다음을 수행하여 해결할 수 있습니다.

또는 이 데이터베이스에서 이 모니터가 별로 중요하지 않을 경우 다음을 수행합니다.

외부

이 설정에 대한 자세한 정보를 참조: ALTER DATABASE SET 옵션(Transact-SQL)

" 통계를 사용하여 쿼리 성능 향상"도 참조하십시오.

Element properties:

TargetMicrosoft.SQLServer.2008.Database
Parent MonitorMicrosoft.SQLServer.2008.Database.AutomaticConfiguration
CategoryConfigurationHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBConfigurationStatus
RemotableTrue
AccessibilityPublic
Alert Message
통계 자동 업데이트 구성 오류
컴퓨터 "{2}"에 있는 SQL 인스턴스 "{1}"의 데이터베이스 "{0}"에 대한 통계 자동 업데이트 설정이 최적 상태로 설정되지 않았습니다.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.Database.Configuration.AutoUpdateSet" Accessibility="Public" Enabled="false" Target="SQL2008Core!Microsoft.SQLServer.2008.Database" ParentMonitorID="Microsoft.SQLServer.2008.Database.AutomaticConfiguration" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBConfigurationStatus" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.Database.Configuration.AutoUpdateSet.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ConfigurationValueOK" MonitorTypeStateID="ConfigurationValueOK" HealthState="Success"/>
<OperationalState ID="ConfigurationValueNotOK" MonitorTypeStateID="ConfigurationValueNotOK" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ConnectionString>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ConnectionString$</ConnectionString>
<DatabaseName>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</DatabaseName>
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
<ConfigValue>AutoUpdateSet</ConfigValue>
<ExpectedValue>ON</ExpectedValue>
<ExcludeOnExpress>false</ExcludeOnExpress>
<SQLSKU>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/Edition$</SQLSKU>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>