Server Management Studio'da sorgu planlarını görüntüleme


9

Başka bir SQL sunucu sorusu: Sayaçlar sıfırlandığından beri bana en çok CPU yoğun SQL veren basit bir sorgu var:

select top 10  
    sum(qs.total_worker_time) as total_cpu_time,  
    sum(qs.execution_count) as total_execution_count, 

    qs.plan_handle, st.text  
from  
    sys.dm_exec_query_stats qs 
cross apply sys.dm_exec_sql_text(qs.plan_handle) as st
group by qs.plan_handle, st.text 
order by sum(qs.total_worker_time) desc

Soru 1: Tam olarak nedir plan_handle? Oracle'da olduğu gibi planın bir karması gibi görünmüyor. Soruyorum çünkü bir cümle planının değiştiği durumu tespit edebilmek istiyorum.

Soru 2: Bir plan_handle'ım olduğunda, gerçek planla ilgileniyorum. Ben de öyle, örneğin:

select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)

Query_plan sütununda, tıkladığımda bir XML belgesi görüntüleyen bir bağlantı alıyorum. Diske whatever.sqlplan olarak kaydedersem, Windows'ta çift tıklayabilirim ve Management Studio'da doğru bir şekilde görüntülenir. Elbette bu adımı atlatmanın bir yolu olmalı mı ?!

Soru 3: XML'i SET SHOWPLAN_TEXT'in eski günlerinde olduğu gibi tekrar metin biçimine dönüştürmenin bir yolu var mı? Onları grafiksel olarak görebilmek istiyorum ama aynı zamanda anlamlı bir şekilde farklılaştırmayı otomatikleştiriyorum.

Teşekkürler!

Yanıtlar:


7

Wrox Press'in SQL Server 2008 Dahili ve Sorun Giderme kitabında aşağıdaki ipucunu buldum:

Bir SQL 2005 Server'a bağlı SQL 2008 SSMS kullanıyorsanız, XML sorgu planına tıkladığınızda grafik sorgu planını sizin için otomatik olarak yükler.

Aynı kitaptan aşağıdaki sorguyu kullanarak çalıştığını doğruladım:

select session_id, text, query_plan
from sys.dm_exec_requests
cross apply sys.dm_exec_sql_text(sql_handle)
cross apply sys.dm_exec_query_plan(plan_handle)

Ayrıca, henüz bakmadıysanız, SQL Sentry'nin ücretsiz Plan Explorer'a göz atın. Önce XML'i diske bir .sqlplan olarak kaydetmeniz gerekir, ancak SQL Yürütme Planı'nın kullanımını çok daha kolay bir şekilde sunar. Umarım birisi bir gün bir Görsel Yürütme Planı Farkı aracı bulur. : D


9

A1: plan_handle, bir grup ifade veya toplu işlem için bir karma değerdir.

Y2: Hayır, dm_exec_query_plan sorgu planını XML biçiminde döndürür, bu nedenle grafiği görmek için üzerine tıklamanız gerekir.

A3. Bunu dene:

SELECT query_plan 
FROM sys.dm_exec_text_query_plan (0x06000100A27E7C1FA821B10600,0,-1);

1
Geri dönüyorum <ShowPlanXML xmlns="http://schemas.microsoft.com...ama hala doğrudan göstermenin bir yolu yok - önce diske bir .sqlplandosya olarak kaydetmem gerekiyor . Tuhaf. Teşekkürler tho ':)
Gaius
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.