Diskimizi maksimum performansta kullanabiliyor muyuz?
Bu makaleyi anlamak için aşağıdaki kavramları bilmemiz gerekir.
Page: SQL Server storage’daki en temel birimdir. Her Page 8 KB alandan oluşur.
Extent: Fiziksel olarak sıralı 8 page’in bir araya gelmesiyle oluşur. Boyutları 64 KB’tır. Extentler, page’lerin verimli bir şekilde yönetilmesine yardımcı olur. Extentler kendi aralarında ikiye ayrılır.
Mixed Extent: Farklı nesnelere ait page’lerin bir araya gelmesiyle oluşur.
Uniform Extent: Aynı nesneye ait 8 page’in bir araya gelmesiyle oluşur.
Allocation Unit Size: Bir dosyayı tutmak için diskte ayrılan en küçük alandır. Default 4 KB olarak gelir. SQL Server için tavsiye edilen best practice 64 KB’tır.
SQL Server’ın 1 Uniform Extent(64 kb) veri okumak istediğini düşünelim. Ve bu verinin memory’de olmadığını varsayalım. Eğer diskimizi formatlarken allocation unit size’ı 4 KB olarak seçtiysek, bu okuma işlemini gerçekleştirebilmek için 64/4=16 kere diske erişmesi gerekecek. Diske fazladan yapılacak her erişim performansı azaltacaktır. Diskimizi, allocation unit size’ı 64 KB olacak şekilde formatladığımızda ise, SQL Server 1 Uniform Extent(64 KB) okumak istediğinde 64/64=1 kere diske erişmesi gerekecek. Veri boyutu arttıkça bu işlemin performansa etkisi giderek artacaktır. Diskinizin şu anda kullanmakta olduğu Allocation Unit Size’ını cmd komut satırına aşağıdaki komutu yazarak öğrenebilirsiniz.
fsutil fsinfo ntfsinfo o:
“o” yazan yere diskinizin ismini yazmalısınız. Çıkan sonuçta Bytes Per Cluster: yazan yerde allocation unit size’ı görebilirsiniz. Aşağıda görüldüğü gibi diskimiz allocation unit size’ı 65536 byte (64 KB) olacak şekilde formatlanmış.

Aşağıda diskimizi formatlarken allocation unit size’ı nasıl seçeceğimizi görebilirsiniz.

Diskimiz üzerinde sağ tıklayıp Format diyoruz. Daha sonra açılan pencereden hemen yanındaki resimdeki gibi Allocation Unit Size’ı 64 KB olarak seçiyoruz. Tabi bu işlemi yapmadan önce diskinizdeki veriyi başka bir yere kopyalamayı unutmayın.