Bu makalede index fragmentation yapısına değinmiş olacağız. Öncelikle index yapıları neden fragmentation olur. Kullanıcılar tabloya insert update ve delete işlemleri sonucu index yapımızın olduğu ilgili page içerisinde alan kalmayabilir. Bunun için sql server page yapımıza sığmayan yeni değerler farklı bir page üzerinde durmaktadır. Buda verilerimizin dağınık bir şekilde durmasına ve index yapımızın bozulmasına sebebiyet verecektir. Bu yapının önlenmesi için fill factor operatörünün kullanılması gerekmektedir.
Fill factor nedir değinmek gerekirse; kullanıcı index yapımızın olduğu tablolara insert işlemi gerçekleştirdikten sonra index yapımızın olduğu page’lerde yer olmayınca yeni bir page açılır yeni değerler buraya kaydedilir. Bu yapınında index yapımızı bozduğunu söylemiştik. Bunun için fill factor ayarlaması yapılınca index’lerimizin olduğu her page’de belirlemiş olduğunu yüzdelik değerle boş bir alan bırakıyoruz. Buda sonradan eklenecek insert ifadelerin boş olan page kısmına yazılması sağlanacak index yapılarımızın fragmentation gecikmiş olacaktır. Düzenli olarak indexleri rebuild ya da reorganize edecek bir job oluşturmalısınız.
Örneğin fill factor’ü %90 olarak set ederseniz Leaf Level page’lerin %90’unu doldurur ve %10’unu boş bırakır. Bu şekilde leaf level page’e kayıt eklemek istediğinde yeterli boş alanı bulur ve index’in diskte dağılması problemini geciktirmiş olur. Fill Factor ‘u index’inizin fragmante olma hızına göre set edebilirsiniz.
Fill factor, create rebuild işlemlerinde belirlenebilirken ssms arayüzündende belirlenebilir.
Bu yapı ne kadar boş alan olarak görülsede page boyutunu arttırtacaktır.
Not: Index’i create ya da rebuild ederken fill factor belirlemişsek birde pad_index=on seçeneğini kullanabiliriz. Pad_index’i aktif edersek fill factor ile leaf level page’lerin sonuna konan oran kadar boşluk intermediate level page’lere de konulur. Ama performans anlamında çok bir önem arz ettiğini söyleyemem.
Not: Olahallengren scriptlerinde fill factor belirtilmesi gerekmektedir. SSMS üzerinden oluşturulduğunda instance bazlı default olarak ne ise o gelmektedir.
Fill factor ilgili indexs üzerinde manuel ayarlandığı gibi ssms arayüzündende ayarlanabilir.

Yukarıda resimde dikkat edersek rebuild işleminde veya reorganize işlemlerinde pad index ifadesini true veya on yapabiliriz.
İnstance üzerinde properties ekranıdan fill factor değeri genel olarak ayarlanabilir

Bu makalede Indexs’lerin fragmentation ne olduğunu değinmiş olduk. Başka bir makalede görüşmek dileğiyle..
Gerçekten Allah’ın Kitab’ını okuyanlar, namazı dosdoğru kılanlar ve kendilerine rızık olarak verdiklerimizden gizli ve açık infak edenler; kesin olarak zarara uğramayacak bir ticareti umabilirler. Fatır Suresi, 29. Ayet