Performance Monitor

Performance Monitor işletim sisteminin ve uygulamaların kaynak kullanımına dair bilgi toplayabileceğimiz bir windows aracıdır. Bu aracı SQL Server’ın kaynak kullanımlarını gözlemlemek için de kullanabiliriz. Aşağıda veri tabanı performansımızı gözlemlemek için sıkça kullandığımız sayaçları ve olması gereken değerleri listeledim. Bu sayaçları sistemde gözlemlediğimiz “wait statistics” ile birlikte değerlendirmek performans konusunda daha doğru sonuçlara ulaşmamızı sağlayacaktır.

Memory –> Available MBytes : Kullanılabilir bellek miktarı
Memory –> Free System Page Table Entries : İşletim sisteminin (sanal fiziksel adres eşlemesi için) kullandığı bellek tamponları. 10000 üzerinde olması önerilir
Memory –> Pages Input/Sec : Diskten belleğe saniyede getirilen sayfa sayısı. Yüksek olması SQL Server’ın diskten okuma sıklığı ve ram ihtiyacı olduğu anlamına gelebilir. 
Memory –> Pages Output/Sec :  Bellekten diske (Pagefile.sys) saniyede atılan sayfa sayısı
Memory –> Pages/Sec : Pages Input/sec ve Pages Output/sec değerlerinin toplamı.  sürekli olarak 50 den büyük seyrediyorsa memory darboğazı oluşmuş olabilir.
Paging File –> %Usage : Pagefile.sys’ın ne kadarının kullanıldığını gösterir.
Paging File –> %Usage Peak : Pagefile en çok ne kadar kullanıldı?

Physical Disk –> Avg. Disk sec/Read : Diskten okuma gecikmesi. 8ms’den az olması önerilir.
Physical Disk –> Avg. Disk sec/Write : Diske yazma gecikmesi. 8ms’den az olması önerilir.
Physical Disk –> Disk Reads/sec : Saniyede diskten yapılan okuma sayısı
Physical Disk –> Disk Writes/sec : Saniyede diske yapılan yazma sayısı
Physical Disk –> % Idle Time : İşletim sisteminden diske herhangi bir istek gitmediği (okuma ya da yazma) zaman yüzdesi. 50 üzeri olması önerilir.

Processor –> % Processor Time : CPU kullanımı
Processor –> Privileged Time : İşlemcinin kernel modda çalışma yüzdesi. Kullanıcı prosesleriyle değil işletim sistemi prosesleriyle meşgul olma süresi. %30’dan az olması öneriliyor.
Process(sqlservr) –> % Privileged Time : SQL Server’ın işlemciyi kernel modunda kullanma süresi. %10 altında olmalı
Process(sqlservr) –> % Processor Time : SQL Server’ın toplam CPU kullanımı

SQLServer:Access Methods Forwarded Records/sec : Heap tablolarda güncelleme esnasında vuku bulabilen page taşıma sayısı. Yüksek ise büyük boyutlu heap tablo var mı kontrol edilir.
SQLServer:Access Methods Free Space Scans/sec : Tablo ve indekslerde insert, update işlemlerinde, verinin yazılacağı boş alan bulmak için yapılan tarama (scan) sayısı. Fill factor değerlerini ve heap tablo var mı kontrol etmekte fayda vardır. Index fragmentation azaltılmaya çalışılmalıdır. <10 olması önerilir.
SQLServer:Access Methods Full Scans/sec : Tablo ya da indekslerde saniyede yapılan scan sayısı. <20 olması önerilir. Yüksek seyrediyorsa sorgu optimizasyonu yapılmalı ve index kullanımı artırılmaya çalışılmalıdır. Heap tablolar varsa kontrol edilmelidir.
SQLServer:Access Methods Page Splits/sec : Saniyedeki page bölünme miktarı
SQLServer:Access Methods Index Searches/sec : saniyedeki index seek ya da scan sayısı. Yüksek olması indeks kullanımının yüksek olduğunu gösterir ve olması gerekendir. >100 olması istenir.
SQLServer:Access Methods Mixed page allocations/sec : Mixed extent sayısı. Yüksek olması fragmentation yüksekliğini gösterir

SQLServer:Buffer Manager Buffer cache hit ratio : Buffer ön belleği verimli çalışıyor mu? Disk yerine bellekten ne kadar okuma yapılıyor? %97 den büyük olması önerilir.
SQLServer:Buffer Manager Checkpoint pages/sec : Checkpoint (buffer pool (dirty pages) –> disk ) sırasında diske yazılan sayfa sayısı. <100 olması öneriliyor. >100 olması çok fazla I/O yüklü anlamına gelir.
SQLServer:Buffer Manager Free pages : Buffer’da kullanılmaya hazır page sayısı. Yüksek olması iyidir. <500 ise ram ihtiyacı olabilir.
SQLServer:Buffer Manager Lazy writes/sec :  buffer’daki dirty page’lerin diske yazılma (flush) işlemi saniyede kaç kez gerçekleşti. Yüksek seyrediyorsa buffer’ın sık sık boşaltılmaya çalışıldığı ve ram yetersizliği olduğu düşünülebilir. <20 olması önerilir.
SQLServer:Buffer Manager Page life expectancy : Buffer’da page’ler ne kadar süreyle tutuluyor? en az >300 saniye olmalı.
SQLServer:Buffer Manager Page lookups/sec :  Buffer pool içindeki data page’lere saniyede yapılan okuma sayısı. OLTP ortamında yüksek olması index kullanımının başarılı olduğunu gösterir.
SQLServer:Buffer Manager Page reads/sec : Diskten saniyede okunan page sayısı. >90 ise indeks stratejisi veya ram baskısını gösterir.
SQLServer:Buffer Manager Page writes/sec : buffer pool’daki dirty page’lerin saniyede diske yazılma (flush) sayısı. >90 olması memory baskısı anlamına gelebilir.

SQLServer:General Statistics Temp Tables For Destruction : SQL Server’ın silmek için kuyruğa aldığı temp tablo sayısı
SQLServer:General Statistics Logins/sec : 
SQLServer:General Statistics Logouts/sec :
SQLServer:General Statistics – User Connections : Aktif bağlı kullanıcı sayısı

SQLServer:Latches Latch Waits/sec  : Saniyede kaç kez latch beklemesi (wait) olduğu. >1000 durumunda gözlenmesinde fayda var.
SQLServer:Latches Total Latch Wait Time (ms) (Total Latch Wait Time) / (Latch Waits/Sec) : ortalama latch bekleme süresi. <10 olması önerilir.

SQLServer:Locks Lock Requests/sec (Lock Request/sec)/(Batch Requests/sec) : 
SQLServer:Locks Lock Waits/sec : Sorgular lock’lanmış kaynakları saniyede kaç kez bekliyor. <100 ms olması beklenir.
SQLServer:Locks Lock Wait Time : Üstteki sayacın toplam miktarı. Toplam bekleme süresi.

SQLServer:Memory Manager Memory Grants Pending : Sorgu için talep edilen memory miktarı temin edilemediğinde oluşur. 0 olması idealdir. Tüm sorguların ihtiyaç duyduğu ram’i alabildiğini gösterir. 5 üzeri değerlerde ram yetersizliği söz konusudur.
SQLServer:Memory Manager Target Server Memory (KB) : SQL Server’ın mevcut yüküne göre talep ettiği ram miktarı
SQLServer:Memory Manager Total Server Memory (KB) : SQL Server mevcut durumda ne kadar ram kullanıyor?

SQLServer: SQL Statistics – Batch Requests/sec : Saniyede gönderilen toplam T-SQL komut kümesi (batch) sayısı. Bu sayaç kendi başına bir şey ifade etmese de 1000 üzeri değerlerde çok yoğun bir veri tabanından söz edilebilir.
SQLServer: SQL Statistics – Compilations/sec :  Saniyede sorgu çalışma plan oluşturma sayısı. 0-10 arası değerlerde plan cache’in yeterli olduğu düşünülebilir.
SQLServer: SQL Statistics – Recompilations/sec : saniyede kaç mevcut çalışma planı yeniden derleniyor.