sys.dm_exec_query_plan (Transact-sql)

Showplan xml biçiminde planı tanıtıcısı tarafından belirtilen toplu iş için döndürür. Planı plan tanıtıcısı tarafından önbelleğe alınmış veya şu anda yürütülen olabilir belirtti.

Showplan xml şeması yayımlanmış ve mevcut Microsoft Web sitesini. Ayrıca dizindeki kullanılabilir nerede SQL Serveryüklenir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

sys.dm_exec_query_plan ( plan_handle )

Bağımsız değişkenler

Dönen Tablo

Sütun adı

Veri türü

Açıklama

DBID

smallint

Etkin olarak içerik veritabanı Kımlığı ne zaman Transact-SQLbu plana karşılık gelen deyimi derlenmiş. Geçici ve hazırlanmış sql deyimleri için ifadeler nerede derlendi veritabanı Kımlığı.

NULL olabilecek sütundur.

ObjectId

int

Bu sorgu planı için (örneğin, saklı yordam veya kullanıcı tanımlı bir işlev) nesne Kımlığı. Geçici ve hazırlanan toplu işlemleri için bu sütunda ise boş.

NULL olabilecek sütundur.

Sayı

smallint

Numaralandırılmış saklı yordam tamsayı. Yordamları için bir grup siparişleri uygulaması adlandırılmış orderproc; 1, orderproc; 2ve bu böylece devam eder. Geçici ve hazırlanan toplu işlemleri için bu sütunda ise boş.

NULL olabilecek sütundur.

şifreli

bit

İlgili saklı yordam şifreli olup olmadığını gösterir.

0 = şifreli değil

1 = şifreli

Sütun NULL olabilecek değil.

sys.dm_exec_query_planquery_plan

xml

İle belirtilen sorgu yürütme planı derlemezamanı Showplan gösterimini içerir plan_handle. Showplan xml biçimindedir. Bir planı oluşturulan içerir, örneğin geçici her toplu işlem için Transact-SQLdeyimleri, saklı yordam çağrıları ve kullanıcı tanımlı bir işlev çağrıları.

NULL olabilecek sütundur.

Açıklamalar

Showplan çıkış döndürülür aşağıdaki koşullar altında sys.dm_exec_query_planquery_plan sütun için döndürülen tablo sys.dm_exec_query_plan:

  • Sorgu planı kullanarak belirtilen plan_handletahliye planı önbellekten sys.dm_exec_query_planquery_plan döndürülen tablo sütun null. Ne zaman planı ele yakalandığı ve ne zaman birlikte kullanıldığı arasında gecikme süresi ise, bu durum oluşabilir sys.dm_exec_query_plan.

  • Bazı Transact-SQLdeyimleri önbelleğe, toplu işlem bildirimleri veya deyimleri içeren dize harflerin büyüklüğü 8 KB'den daha büyük gibi. Adresinden alındı gibi ifadeler için xml Showplans can't kullanarak sys.dm_exec_query_plan önbellekte yok çünkü toplu yürütülmekte sürece.

  • Eğer bir Transact-SQLtoplu iş veya saklı yordam içeren kullanıcı tanımlı bir işlev çağrısı ya da örneğin exec kullanarak dinamik sql çağrısı (string), kullanıcı tanımlı bir işlev tarafından döndürülen tablo dahil değildir için xml Showplan derlenmiş sys.dm_exec_query_plan toplu iş veya saklı yordam. Bunun yerine, ayrı arama yapmak gerekir sys.dm_exec_query_plan için kullanıcı tanımlı işleve karşılık gelen planı tanıtıcı.

Bir ad hoc sorgu basit veya Zorlanmış parameterization kullandığında sys.dm_exec_query_planquery_plan sütun yalnızca açıklama metni ve değil gerçek sorgu planı içerir. Sorgu planı dönün çağrısı sys.dm_exec_query_plan için hazırlanan Parametreli sorgu planı tanıtıcı. Başvurarak sorgu parametreli olup olmadığını belirlemek için sql sütununda eşleştirirsys.syscacheobjectsgeriye görünümü veya metin sütununun sys.dm_exec_sql_text dinamik yönetimi görüntüleyin. PARAMETERIZATION görmek hakkında daha fazla bilgi için Query Performanceve Forced Parameterization.

İzin verilen iç içe düzeyleri sayısında bir sınırlama nedeniyle xmlveri türü sys.dm_exec_query_plan karşılayan veya aşan 128 düzeyde iç içe geçmiş öğelerini sorgu planları döndüremez. Önceki sürümlerinde SQL Server, bu durum geri sorgu planını engelledi ve hata 6335 üretir. De SQL Server 2005Service Pack 2 ve sonraki sürümleri, sys.dm_exec_query_planquery_plan sütun null döndürür. Sen-ebilmek kullanma sys.dm_exec_text_query_plan (Transact-sql)sorgu planı çıktı metin biçiminde dönmek için dinamik yönetimi işlevi.

İzinler

Yürütülecek sys.dm_exec_query_plan, bir kullanıcı bir üyesi olmanız sysadmin sabit sunucu rolü veya sunucuda VIEW server state iznine sahip.

Örnekler

Aşağıdaki örnekler nasıl kullanılacağını sys.dm_exec_query_plan yönetimi görüntüleyin.

xml Showplans görüntülemek için aşağıdaki sorgular, sorgu düzenleyicisinde yürütün. SQL Server Management Studio, ardından ShowPlanXML de sys.dm_exec_query_planquery_plan tarafından döndürülen tablo sütun sys.dm_exec_query_plan. xml Showplan görüntüler Management StudioÖzet bölmesindeki. xml Showplan bir dosyaya kaydetmek için sağ ShowPlanXML içinde sys.dm_exec_query_planquery_plan sütunu tıklatın Sonuçları Kaydet, biçiminde dosya adı <file_name>.sqlplan; Örneğin, MyXMLShowplan.sqlplan.

A.Yavaş çalışan Transact-sql sorgu veya toplu iş için önbelleğe alınan sorgu planı almak

Sorgu planları için çeşitli Transact-SQLtoplu işlemleri, ad hoc toplu işlemleri, saklı yordamları ve kullanıcı tanımlı işlevler gibi bir planı önbellek denilen bellek alanında önbelleğe alınmış. Her önbelleğe alınan sorgu planı planı tanıtıcı olarak adlandırılan benzersiz bir kimlik ile tanımlanır. İle bu planı ele belirleyebileceğiniz sys.dm_exec_query_plan için belirli bir yürütme planı almak için dinamik yönetimi görünümü Transact-SQLsorgu veya toplu iş.

Eğer bir Transact-SQLsorgu veya toplu iş için belli bir bağlantıda uzun bir süre çalışan SQL Server, bu sorgu için yürütme planı almak veya ne gecikmeye neden keşfetmek için toplu. Aşağıdaki örnek xml Showplan yavaş çalışan sorgu veya toplu iş için almak nasıl gösterir.

[!NOT]

Bu örneği çalıştırmak için değerleri değiştirmek session_idve plan_handledeğerlerle sunucunuza özel.

Sunucu işlem Kımlığı (SPID) kullanarak sorgu veya toplu iş yürütme işlemi için alın sp_whosaklı yordamı:

USE master;
GO
exec sp_who;
GO

USE master;
GO
exec sp_who;
GO

Tarafından döndürülen sonuç kümesi sp_whoSPID olduğunu gösterir 54. Sen-ebilmek kullanma SPID ile sys.dm_exec_requestsdinamik yönetimi görünümü aşağıdaki sorguyu kullanarak planı ele almak için:

USE master;
GO
SELECT * FROM sys.dm_exec_requests
WHERE session_id = 54;
GO

USE master;
GO
SELECT * FROM sys.dm_exec_requests
WHERE session_id = 54;
GO

Tarafından döndürülen tablo sys.dm_exec_requests yavaş çalışan sorgu veya toplu iş planı tanıtıcı olduğunu gösterir 0x06000100A27E7C1FA821B10600, olarak belirtebileceğiniz plan_handledeğişkeniyle sys.dm_exec_query_planaşağıdaki yürütme planı xml biçiminde almak için. xml biçiminde yavaş çalışan sorgu veya toplu iş için yürütme planı bulunan sys.dm_exec_query_planquery_plan tarafından döndürülen tablo sütun sys.dm_exec_query_plan.

USE master;
GO
SELECT * FROM sys.dm_exec_query_plan (0x06000100A27E7C1FA821B10600);
GO

USE master;
GO
SELECT * FROM sys.dm_exec_query_plan (0x06000100A27E7C1FA821B10600);
GO

B.Her sorgu planı planı önbellekten Al

Tüm sorgu planları önbelleğe planı kolları anlık görüntüsünü plan önbelleğinde bulunan tüm sorgu planları almak için sorgulayarak almak sys.dm_exec_cached_plansdinamik yönetimi görünümü. Planı kolları depolanır plan_handlesütununda sys.dm_exec_cached_plans. cross apply işleci planı tanıtıcıları sonra kullan sys.dm_exec_query_plangibi. xml Showplan çıkış için her planı plan önbelleğinde bulunan query_plandöndürülen tablo sütun.

USE master;
GO
SELECT * FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle);
GO

USE master;
GO
SELECT * FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle);
GO

C.Almak için sunucu planı önbellekten sorgu istatistikleri topladı her sorgu planı

Tüm sorgu planları için hangi sunucunun sahip plan önbelleğinde halen toplanan istatistikleri anlık görüntü almak için bu planları önbelleğe planı kolları sorgulayarak almak sys.dm_exec_query_statsdinamik yönetimi görünümü. Planı kolları depolanır plan_handlesütununda sys.dm_exec_query_stats. cross apply işleci planı tanıtıcıları sonra kullan sys.dm_exec_query_plangibi. Her plan için sunucu toplanan istatistikleri şu anda plan önbelleğinde bulunan için çıktı xml Showplan query_plandöndürülen tablo sütun.

USE master;
GO
SELECT * FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);
GO

USE master;
GO
SELECT * FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);
GO

D.Ortalama cpu zamanı tarafından üst beş sorgular hakkında bilgi almak

Aşağıdaki örnek planları ve ortalama cpu süresi üst beş sorguları için döner.

SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
Plan_handle, query_plan 
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)
ORDER BY total_worker_time/execution_count DESC;
GO

SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
Plan_handle, query_plan 
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)
ORDER BY total_worker_time/execution_count DESC;
GO

Ayrıca bkz.

Başvuru

Dinamik yönetimi görünümler ve işlevler (Transact-sql)

içinsys.dm_exec_cached_plansDinamik (Transact-sql)

sys.dm_exec_query_stats (Transact-sql)

sys.dm_exec_requests (Transact-sql)

sp_who (Transact-sql)

sys.dm_exec_text_query_plan (Transact-sql)

Kavramlar

Using APPLY

Showplan fiziksel ve mantıksal işleçleri başvurusu

Diğer Kaynaklar

XML Showplans

Execution Plan Caching and Reuse

Query Performance