Index rebuild with MAXDOP=x

Farklı maxdop varyasyonlarıyla index rebuild process’ine bir göz atalım. Index bakımlarında MAXDOP kullanımının süreyi etkileyebileceğini aşağı yukarı tahmin edebiliriz çünkü paralel kullanımlar genel olarak CPU tüketimi ile birlikte veritabanı üzerindeki işlemlerin hızlanmasını sağlamaktadır. Ancak hangi MAXDOP değeri bize ne fayda sağlayacak? Ya da sağlamayacak.

Demo

Öncelikle CPU tüketimi ve REBUILD süresine göz atalım.

CPU grafiği
Zaman grafiği (ms)

Grafiklerden de görüleceği üzere parallelism kapalı olduğunda (MAXDOP=1) REBUILD işlemlerimiz uzuyor ve CPU tüketimi de buna bağlı olarak artıyor. Diğer değerler içinde en optimum kaynak tüketimini MAXDOP=8 ele almış gibi duruyor. Ancak bu durum makine kaynaklarına bağlı olarak değişebilmektedir.

Production ortamlarına uygulamadan önce bir production replikası üzerinde test etmek önerilir.

Şimdi daha farklı bir taraftan bakıp parallelism değerlerine göre REBUILD edilen index’lerin fragmante oranlarına bakalım.

MAXDOP=1
MAXDOP=4
MAXDOP=8
MAXDOP=16
MAXDOP=32

Parallelism değerleriyle oynadığımda REBUILD ettiğim index’lerde bile fragmante olduğunu görüyoruz. Page’lerin thread’ler arasında dağılımından kaynaklı oluşan bu durum, daha büyük tablolar için daha fazla fragmante değerine sahip index’ler elde etmeye sebep oluyor.

MAXDOP kullanımının belirli bir best practice’i olmadığından yukarıdaki değerlere ve kendi ortamlarınızadaki değerlere göre bir MAXDOP belirlemek daha sağlıklı olacaktır.

My favorite is MAXDOP=1 

Yorum Gönderin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.