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.
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.
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