Disk’i 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. Disk’i en çok kullanan sorguları tespit edip gerekli iyileştirme işlemlerini yapabilirsiniz. Sorguyu aşağıda paylaşıyorum. “CPU’yu En Çok Kullanan Sorgular” isimli makaleye de göz atmak isteyebilirsiniz.
select st.[text] AS Sorgu, qs.last_execution_time AS [Son Çalışma Zamanı], qs.execution_count AS [Çalışma Sayısı], qs.total_logical_reads AS [Toplam Logical Read], qs.total_logical_reads/execution_count AS [Ortalama Logical Read], qs.total_worker_time/1000000 AS [Toplam CPU Zamanı(saniye)], qs.total_worker_time/qs.execution_count/1000 AS [Ortalama CPU Zamanı(milisaniye)], qp.query_plan AS [Execution 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, qs.total_logical_reads from sys.dm_exec_query_stats qs order by qs.total_worker_time desc) qs cross apply sys.dm_exec_sql_text(plan_handle) st cross apply sys.dm_exec_query_plan(plan_handle) qp order by qs.total_logical_reads 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 Logical Read kısmında, sorgunun yaptığı toplam logical read sayısını verir.
Ortalama Logical Read kısmında, sorgunun yaptığı ortalama logical read sayısını verir.
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.