SQL Server 2008’de Query Plan’ları görmek istiyorsanız…


Diyelim ki, SQL Server’ın cache’indeki query planları görmek istiyorsunuz.

Şu sorguyu deneyin:

SELECT p.query_plan
FROM sys.dm_exec_cached_plans
OUTER APPLY sys.dm_exec_query_plan (plan_handle) p
WHERE plan_handle IS NOT NULL

Eğer cache’dekileri değil de o an aktif talep olan sorguların planlarını görmek istiyorsanız:

SELECT p.query_plan
FROM sys.dm_exec_requests
OUTER APPLY sys.dm_exec_query_plan (plan_handle) p
WHERE plan_handle IS NOT NULL

Gün gelir lazım olur. Temel bilgiler: sys.dm_exec_query_plan verilen bir plan handle’ı için xml olarak sorgu planını veriyor. XML’i tıklayınca da Management Studio planı size görsel olarak gösteriyor.

Bu fonksiyona plan_handle verebilecek üç adet dinamik yönetim görünümü var. İkisini zaten yukarıdaki sorgularda gördünüz. Bir diğeri de dm_exec_query_stats.

Onunla ilgili de mesela şöyle bir sorgu çok işinize yarayabilir:

SELECT p.query_plan
FROM sys.dm_exec_query_stats s
OUTER APPLY sys.dm_exec_query_plan (plan_handle) p
WHERE plan_handle IS NOT NULL and s.max_elapsed_time > 1000000

İstatistiksel olarak belirli eşiklerin üzerinde olan sorguların planlarını çat diye bulmak hoş olsa gerek….

Bu yazı SQL Server 2008 içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s