SQL Serverda Veritabanı Başına CPU Kullanımını Tespit Etmek

0
Share

Bazı durumlarda SQL Server veritabanının ne kadar cpu kullandığını bilmemiz gerekebiliyor.  En çok cpu kullanan veritabanlarını tespit ederek gerekli performans çalışmalarında kullanabiliriz.

[pastacode lang=”sql” manual=”USE%20master%0AGO%0A%0ACREATE%20FUNCTION%20dbo.udf_Get_DB_Cpu_Pct%20(%40dbName%20sysname)%0ARETURNS%20decimal%20(6%2C%203)AS%0ABEGIN%0A%20%0A%20%20%20DECLARE%20%40pct%20decimal%20(6%2C%203)%20%3D%200%0A%0A%20%20%20SELECT%20%40pct%20%3D%20T.%5BCPUTimeAsPercentage%5D%0A%20%20%20FROM%0A%20%20%20%20(SELECT%20%0A%20%20%20%20%20%20%20%20%5BDatabase%5D%2C%0A%20%20%20%20%20%20%20%20CONVERT%20(DECIMAL%20(6%2C%203)%2C%20%5BCPUTimeInMiliSeconds%5D%20*%201.0%20%2F%20%0A%20%20%20%20%20%20%20%20SUM%20(%5BCPUTimeInMiliSeconds%5D)%20OVER%20()%20*%20100.0)%20AS%20%5BCPUTimeAsPercentage%5D%0A%20%20%20%20%20FROM%20%0A%20%20%20%20%20%20(SELECT%20%0A%20%20%20%20%20%20%20%20%20%20dm_execplanattr.DatabaseID%2C%0A%20%20%20%20%20%20%20%20%20%20DB_Name(dm_execplanattr.DatabaseID)%20AS%20%5BDatabase%5D%2C%0A%20%20%20%20%20%20%20%20%20%20SUM%20(dm_execquerystats.total_worker_time)%20AS%20CPUTimeInMiliSeconds%0A%20%20%20%20%20%20%20FROM%20sys.dm_exec_query_stats%20dm_execquerystats%0A%20%20%20%20%20%20%20CROSS%20APPLY%20%0A%20%20%20%20%20%20%20%20(SELECT%20%0A%20%20%20%20%20%20%20%20%20%20%20%20CONVERT%20(INT%2C%20value)%20AS%20%5BDatabaseID%5D%0A%20%20%20%20%20%20%20%20%20FROM%20sys.dm_exec_plan_attributes(dm_execquerystats.plan_handle)%0A%20%20%20%20%20%20%20%20%20WHERE%20attribute%20%3D%20N’dbid’%0A%20%20%20%20%20%20%20%20)%20dm_execplanattr%0A%20%20%20%20%20%20%20GROUP%20BY%20dm_execplanattr.DatabaseID%0A%20%20%20%20%20%20)%20AS%20CPUPerDb%0A%20%20%20%20)%20%20AS%20T%0A%20%20%20WHERE%20T.%5BDatabase%5D%20%3D%20%40dbName%0A%0A%20%20%20RETURN%20%40pct%0AEND%0AGO” message=”” highlight=”” provider=”manual”/]

 

Master veritabanı için cpu kullanım durumunu verir.

[pastacode lang=”sql” manual=”USE%20master%0AGO%0ASELECT%20dbo.udf_Get_DB_Cpu_Pct%20(‘master’)%0AGO” message=”” highlight=”” provider=”manual”/]

Çıktı

 

Tüm veritabanları için cpu kullanım durumlarını listeleyelim.

[pastacode lang=”sql” manual=”USE%20master%0AGO%0ASELECT%20d.name%2Cdbo.udf_Get_DB_Cpu_Pct%20(d.name)%20as%20usagepct%0AFROM%20sysdatabases%20d%0AORDER%20BY%20usagepct%20desc%0AGO” message=”” highlight=”” provider=”manual”/]

(Visited 82 times, 1 visits today)