CPU’yu En Çok Kullanan Sorgular
Performans problemi yaşayan sistemler’de performans iyileştirmesi yapmak için genelde ilk baktığımız şeylerden biri CPU’yu ve Disk’i en çok kullanan sorgulardır. CPU’yu en çok kullanan sorguları tespit edip gerekli iyileştirme işlemlerini yapabilirsiniz. Sorguyu aşağıda paylaşıyorum. “Disk’i En Çok Kullanan Sorgular” isimli makaleye de göz atmak isteyebilirsiniz.
select st.[text] AS Sorgu, wt.last_execution_time AS [Son Çalışma Zamanı], wt.execution_count AS [Çalışma Sayısı], wt.total_worker_time/1000000 AS [Toplam CPU Zamanı(saniye)], wt.total_worker_time/wt.execution_count/1000 AS [Ortalama CPU Zamanı(milisaniye)], qp.query_plan, DB_NAME(st.dbid) AS [Veritabanı İsmi] from (select top 50 qs.last_execution_time, qs.execution_count, qs.plan_handle, qs.total_worker_time from sys.dm_exec_query_stats qs order by qs.total_worker_time desc) wt cross apply sys.dm_exec_sql_text(plan_handle) st cross apply sys.dm_exec_query_plan(plan_handle) qp order by wt.total_worker_time desc
Sorgunun çalışması ile aşağıdaki gibi bir sonuç kümesi gelecektir.
Bu sorgu sonucunda dönen değerlerin hepsi sql server servisinin en son çalışmaya başladığı andan itibaren toplanan istatistiklerden alınır. Yani SQL Server servisiniz 1 dakika önce restart olduysa çok verimli bir analiz yapamazsınız.
Sorgu kısmında, sorgunun parametreli halini gösterir.
Son Çalışma Zamanı kısmında, sorgunun en son çalıştığı anı gösterir.
Çalışma Sayısı kısmında, sorgunun kaç kere çalıştığını gösterir.
Toplam CPU Zamanı(saniye) kısmında, sorgunun CPU üzerinde geçirdiği toplam süreyi saniye cinsinden verir.
Ortalama CPU Zamanı(milisaniye) kısmında, sorgunun ortalama çalışma süresini milisaniye cinsinden verir.
Genelde Ortalama CPU Zamanı(milisaniye) değerine göre iyileştireceğimiz sorgulara karar veririz. Birkaç milisaniye’de tamamlanması gereken bir sorgunun Ortalama CPU Zamanı(milisaniye) 2 saniye ise bu sorguyu iyileştirmemiz gerektiğini anlarız. Çok nadirde olsa bazen 200 milisaniye civarında süren bir sorguyu iyiletirdiğimizde sunucu kaynaklarınının CPU kullanımının azaldığını görebiliriz. Bu tip durumlarda genelde 200 milisaniye süren sorgunun Çalışma Sayısı çok fazladır ve sorgunun Ortalama CPU Zamanı(milisaniye) ‘nını birkaç milisaniye bile düşürsek kümülatif olarak iyi bir CPU kazanımı sağlattırabilir.