MSSQL Server Veritabanlarının Execution Planları Görme

Bu makalede herhangi bir veritabanının plan cache üzerinde bulunan execution planları detaylı bir şekilde aşağıdaki komut ile görebiliriz. Tırnak içerisinde sadece plan cache üzerinde bakmak istediğimiz veritabanı adı yazılmaktadır.

SELECT [cp].[refcounts],[cp].[usecounts],[cp].[objtype]
,[st].[dbid],[st].[objectid],[st].[text]
,[qp].[query_plan]
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) qp
WHERE [st].[dbid] = db_id('Database_Name')

usecounts ilgili planının kullanım sayısını vermektedir. query_plan kısmından sorgumuza ulaşıp gerekli düzenlemeler yapılabilir.

Aşağıdaki komut ile tüm veritabanlarında plan cache üzerinde bulunan execution planları detaylı bir şekilde görebiliriz. Useaccount sayılarını büyükten küçüğe doğru sıralamaktadır.

EXEC sp_MSforeachdb'
USE [?];
IF DB_ID(''?'') > 4 -- Sistem veritabanlarını atla (master, tempdb, model, msdb)
BEGIN
    
SELECT  TOP 5
 ''?'' AS [databasename],
[cp].[refcounts],
[cp].[usecounts],[cp].[objtype]
,[st].[dbid],[st].[objectid],[st].[text]
,[qp].[query_plan]
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) qp
WHERE [st].[dbid] = db_id(''?'') ORDER BY usecounts DESC
end ';

Başka makalede görüşmek dileğiyle..

De ki: “Eğer Allah’ı seviyorsanız bana uyun ki, Allah da sizi sevsin ve günahlarınızı bağışlasın. Çünkü Allah çok bağışlayandır, çok merhamet edendir.”Âl-i İmrân-31

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir