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.

 

Loading

Leave Your Comment