데이터베이스 SQL Server 2017 Enterprise CU16 14.0.3076.1
우리는 최근에 기본 인덱스 재 구축 유지 보수 작업에서 Ola Hallengren으로 전환을 시도했습니다 IndexOptimize
. 기본 인덱스 재 구축 작업이 아무런 문제없이 몇 달 동안 실행되었으며 쿼리와 업데이트가 적절한 실행 시간으로 작동했습니다. IndexOptimize
데이터베이스에서 실행 한 후 :
EXECUTE dbo.IndexOptimize
@Databases = 'USER_DATABASES',
@FragmentationLow = NULL,
@FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 = 5,
@FragmentationLevel2 = 30,
@UpdateStatistics = 'ALL',
@OnlyModifiedStatistics = 'Y'
성능이 크게 저하되었습니다. 100ms IndexOptimize
가 걸리던 업데이트 문은 이후 동일한 계획을 사용하여 78.000ms가 걸렸으며 쿼리도 몇 배나 더 나빴습니다.
이 데이터베이스는 여전히 테스트 데이터베이스이므로 (Oracle에서 프로덕션 시스템을 마이그레이션하고 있음) 백업으로 IndexOptimize
되돌리고 비활성화 하고 모든 것이 정상으로 돌아 왔습니다.
그러나 일단 생산에 들어가면 피할 수 있도록 이러한 성능 저하를 유발할 수 IndexOptimize
있는 "정상"과 다른 점 을 이해하고 싶습니다 Index Rebuild
. 찾아야 할 것에 대한 제안은 크게 감사하겠습니다.
업데이트 명령문이 느릴 때 실행 계획. 즉,
IndexOptimize
실제 실행 계획 (가능한 빨리)
나는 차이를 발견 할 수 없었다.
빠른 경우 동일한 쿼리
계획 실제 실행 계획