Veritabanı SQL Server 2017 Enterprise CU16 14.0.3076.1
Kısa bir süre önce varsayılan İndeks Yenileme bakım işlerinden Ola Hallengren'e geçmeyi denedik IndexOptimize
. Varsayılan Dizin Yeniden Oluşturma işleri birkaç ay boyunca sorunsuz bir şekilde çalışıyordu ve sorgular ve güncellemeler kabul edilebilir yürütme süreleriyle çalışıyordu. IndexOptimize
Veritabanında çalıştırdıktan sonra :
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'
performans çok düştü. Daha önce 100 ms süren bir güncelleme ifadesi IndexOptimize
daha sonra 78.000 ms sürdü (özdeş bir plan kullanarak) ve sorgular aynı zamanda birkaç büyüklük daha da kötüye gitti.
Bu hala bir test veritabanı olduğundan (Oracle'dan bir üretim sistemi geçiriyoruz) bir yedeklemeye geri döndük ve devre dışı bıraktık IndexOptimize
ve her şey normale döndü.
Ancak üretime geçtikten sonra bundan kaçındığımızdan emin olmak için bu aşırı performans bozulmasına neden olabilecek IndexOptimize
"normal" den farklı olanı anlamak Index Rebuild
istiyoruz. Ne aramak için herhangi bir öneri büyük mutluluk duyacağız.
Güncelleme deyimi yavaş olduğunda yürütme planı. ie
IndexOptimize Gerçek yürütme planından sonra (en kısa sürede
geliyor)
Bir fark bulamadım.
Hızlı olduğunda aynı sorguyu planlayın
Gerçek yürütme planı