SQL Server I/O Performansı ve Darboğazları Gözleme

Yazma, okuma işlemlerinde aygıtlar içerisinde en yavaşı olan disk, veritabanı yönetim sistemlerinde her zaman en önemli konulardan biri olmuştur. Bir VTYS’nin disk seçimi array konfigürasyonunun, nasıl olacağı o veritabanının kullanım amacına bağlıdır. Yani sözkonusu veritabanı daha çok yazma mı yoksa okuma için mi kullanılacak bunun netleştirilmesi gerekir. Veritabanı motorlarının en çok yaptığı işlemlerden biri çalışma esnasında database page’leri taşımasıdır. Bu da önemli bir I/O trafiğine neden olmaktadır. Örneğin en basiyi bir güncelleme yapılacağı zaman ilgili alanlar, veri sayfaları diskten belleğe taşır commit etmeden önce TEMPDB üzerinde ilgili sıralama ve güncellemeleri yapar. Yani hem okuma hem de yazma durumlarında I/O sistemleri kritik önem arzetmektedir. Bu trafikte en önemli sorun oluşacak darboğazlardır (I/O bottlenecks). Sistem üzerinde taleplerimizi gerçekleştirmeden önce execution plan’a bakmak ve ona göre I/O kaynak tüketimini tahim edip ardından takip etmekte fayda var. Performans sorunu olması sonucu kullanıcılara geç yanıt verilecektir. Bu durumda I/O tarafındaki darboğazları gözlemek için SQL Server’den beslenen çeşitli sayaçlar bulunmaktadır (performance counter). Bu yazıda çok kullanılan, bakılması tavsiye edilen sayaçları listeleyeceğiz.

Disk üzerindeki sayaçlar Logical Disk (Mantıksal Disk) ve Physical Disk (Fiziksel Disk) nesneleri bazında incelenebilir. Physical Disk, disklerin tüm fiziksel alanlarıyla ilgili sayaçlardır. Logical Disk ise disklerin alt bölümleriyle (partition, RAID .) ilgili sayaçlardır.
Sayaçlara işletim sistemi üzerinde Perfomance Monitor aracılığıyla bakabileceğimiz gibi SQL Server içerisindeki DMV’leri de kullanabiliriz. Bu sayaçları anlamlı analiz etmek için sistemin yoğun çalışmasını en az 20 dk veya 1 gün örneklem yapmakta fayda var.
Avg. Disk Queue Length : Örneklem yaptığımız süre içerisinde okuma ve yazma için beklemekte olan disk I/O istek sayısını göstermektedir. Eğer bu değer sürekli olarak 2 ya da daha fazla ise SQL Server’in disk cephesinde bir darboğaz olduğunu söyleyebiliriz. Kuyrukta bekleyen disk işlem sayısı 2’nin altında olmalıdır. Mevcut durumu gözlemek için Current Disk Queue Length sayacı da yönlendirici olabilir.
Avg. Disk Sec/Read : Diskten okunma süresini saniye türünde belirtir. Bu sayaç ta diskte gecikme olup olmadığını gösterir. Deneyimler doğrultusunda bu değerin 10 ve altında olması beklenir. Daha üst değerler yavaşlık olduğunu gösterir. Özellikle günümüzdeki disk teknolojisine göre bu süre 40 ve üstü ise önemli bir sıkıntı olduğunu söyleyebiliriz.
Avg. Disk Sec/Write : Diske yazma süresini belirtir. Önceki sayaçla aynı baremle değerlendirilmelidir.
Physical Disk: %Disk Time : Diskin okuma veya yazma taleplerini gerçekleştirmek için ne kadar meşgul olduğunu gösterir. Bu değerin %50 ve altı olması beklenir. Bu sayacın %100’e yakın bir değer göstermesi sunucunun diski çok kullandığı anlamına gelir ki bu durumda optimizasyon şart olabilir.
Avg. Disk Reads/Sec : Diskten okuma oranını gösterir. Bu değerin %85 altında olması beklenir.
Avg. Disk Writes/Sec : Diske yazma oranını gösterir. Bu değerin %85 altında olması beklenir.
Bu sayaçları bir süre gözleyerek yüksek I/O gecikmelerinin olup olmadığı öğrenilebilir.

SQL Server I/O Performansı ve Darboğazları Gözleme” üzerine bir düşünce

  1. Ümit

    Merhabalar Hocam,
    Bu değerlere nasıl ulaşacağımız hakkında bilgi verseydeniz çok daha yararlı bir makale olurdu.
    İyi Çalışmalar

    Cevapla

Bir cevap yazın

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

Time limit is exhausted. Please reload CAPTCHA.