Veritabanı yöneticileri (DBA) için en büyük zorluklardan biri, sistemde anlık bir yavaşlama olduğunda bunun gerçekten SQL Server kaynaklı mı yoksa işletim sistemi düzeyinde bir sorundan mı kaynaklandığını hızlıca saptamaktır. Bu makalede, T-SQL kullanarak 5 saniyelik hassas bir CPU ölçümünü nasıl yapacağımızı inceleyeceğiz.
SQL Server’da CPU kullanımı değişkendir. sys.dm_exec_requests gibi görünümler o anki durumu verir ancak bir “süreç” içindeki yükü göstermez. Gerçekçi bir analiz için bir başlangıç noktası, bir bekleme süresi ve bir bitiş noktası belirleyerek delta (fark) hesabı yapmalıyız.
Aşağıdaki kod, sadece aktif sorguları değil, sistemin genel CPU sağlığını da hesaba katan daha kararlı bir versiyondur. Özellikle sorgu tamamlanıp listeden düştüğünde oluşabilecek hatalı (negatif) sonuçların önüne geçmek için mantıksal bir kontrol eklenmiştir.
DECLARE @init_sum_cpu_time int,
@utilizedCpuCount int
--get CPU count used by SQL Server
SELECT @utilizedCpuCount = COUNT( * )
FROM sys.dm_os_schedulers
WHERE status = 'VISIBLE ONLINE'
--calculate the CPU usage by queries OVER a 5 sec interval
SELECT @init_sum_cpu_time = SUM(cpu_time) FROM sys.dm_exec_requests
WAITFOR DELAY '00:00:05'
SELECT CONVERT(DECIMAL(5,2), ((SUM(cpu_time) - @init_sum_cpu_time) / (@utilizedCpuCount * 5000.00)) * 100) AS [CPU from Queries as Percent of Total CPU Capacity]
FROM sys.dm_exec_requests

SQL Server her zaman tüm CPU çekirdeklerini kullanmaz (lisanslama veya konfigürasyon gereği). sys.dm_os_schedulers üzerinden VISIBLE ONLINE olanları sayarak gerçek kapasitemizi belirliyoruz.
sys.dm_exec_requests, sadece o an çalışan “aktif” requestleri sayar. Ancak bir sorgu 2. saniyede biterse, 5. saniyedeki toplamdan düşer ve sonucunuz hatalı çıkar. sys.dm_os_tasks ise alt seviye görevleri takip ettiği için daha hassas bir delta sunar.
Bu scripti çalıştırdığınızda çıkan sonuç:
- %0 – %60: Sistem sağlıklı, yük altında değil.
- %60 – %80: Dikkat edilmesi gereken seviye, darboğaz başlayabilir.
- %80+: Kritik seviye. MAXDOP ayarları veya eksik indeksler incelenmelidir.
Başka makalede görüşmek dileğiyle..
Yeminlerinizi tutun. Maide-89
