Aracılığıyla paylaş


sys.dm_exec_query_plan (Transact-SQL)

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

Showplan xml şeması yayımlanmış ve adreste Microsoft Web sitesi.Ayrıca dizindeki kullanılabilir yeri SQL Server 2008 yüklenir.

Konu bağlantısı simgesiTransact-SQL sözdizimi 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

Yürürlükte olan içerik veritabanının kimliği, Transact-SQLBu plana karşılık gelendeyim derlenmiş. Hazırlanan ve ad hoc toplu işlemler için bu sütun olan null.

Null olabilecek sütundur.

objectID

int

Bu sorgu planı için (örneğin, saklı yordam veya kullanıcı tanımlı işlev) nesne kimliği.Hazırlanan ve ad hoc toplu işlemler için bu sütun olan null.

Null olabilecek sütundur.

sayı

smallint

saklı yordam numaralandırılmış bir tamsayı.Örneğin, yordamlar için bir grup siparişleri uygulama adlı orderproc; 1, orderproc; 2ve benzeri.Hazırlanan ve ad hoc toplu işlemler için bu sütun olan null.

Null olabilecek sütundur.

Şifreli dosya

bit

saklı yordam karşılık gelen şifreli olup olmadığını gösterir.

0 = şifreli değil

1 = şifreli

Sütun null değil.

query_plan

xml

Derlemesaat ile belirtilen sorgu yürütme planı Showplan gösterimini içeren plan_handle.Showplan xml biçimidir.Bir planı içeren, örneğin geçici her toplu iş için üretilen Transact-SQL ifadeler, saklı yordam çağrıları ve kullanıcı tanımlı işlev çağrıları.

Null olabilecek sütundur.

Açıklamalar

Hiçbir Showplan çıkış döndürülür aşağıdaki koşullar altında query_plan için döndürülen tablosütun sys.dm_exec_query_plan:

  • Sorgu planı kullanarak belirtilen plan_handle planı önbellekten çıkarıldı query_plandöndürülen tablosütun nullolur. saat varsa, bu durum oluşabilir sys.dm_exec_query_plan.

  • Bazı Transact-SQL ifadeleri önbelleğe alınmaz, toplu işlem ifadeleri ya da ifadelerini içeren dize hazır bilgileri büyük 8 kb cinsinden boyutu.Bu tür ifadeler için xml Showplans edemiyor alınan kullanarak sys.dm_exec_query_plan sürece önbellekte yok çünkü toplu iş yürütülüyor.

  • Bir Transact-SQL toplu iş veya saklı yordam kullanıcı tanımlı bir işlev çağrısı veya dinamik SQLexec örnek olarak kullanarak, bir çağrı içerir (string), kullanıcı tanımlı işlev tarafından döndürülen tablo yer almayan için xml Showplan derlenmiş sys.dm_exec_query_plan toplu iş veya saklı yordam.Bunun yerine, ayrı bir arama yapmanız gereken sys.dm_exec_query_plan kullanıcı tanımlı işleviçin karşılık gelen planı tutamacının.

Ad hoc sorgusu basit ya da zorla parameterizasyonunu kullandığında query_plan sütun deyim metin ve gerçek sorgu planını içerecek.Sorgu planı dönün çağrısı sys.dm_exec_query_plan hazırlanan parametreli sorgu planı tutamacının.Başvurarak parametreli olup olmadığını belirlemek sql sütun sys.syscacheobjects görünümü veya metin sütun sys.dm_exec_sql_text dinamik yönetim görünümü.Parameterizasyonunu bakın hakkında daha fazla bilgi için Basit parameterizasyonunu ve Zorunlu parameterizasyonunu.

İzin verilen iç içe düzey sayısını sınırlama yüzünden xml veri türü sys.dm_exec_query_plan karşılamak veya iç içe geçmiş öğeler 128 düzeylerini aşan sorgu planları döndüremez.Önceki sürümlerinde SQL Server, bu durum döndürmesini sorgu planını engelledi ve hata 6335 üretir.De SQL Server 2005 Service Pack 2 ve sonraki sürümler, query_plan sütun null döndürüyor.Kullanabileceğiniz sorgu planı çıktı metin biçiminde dönmek içinsys.dm_exec_text_query_plan (Transact-SQL)dinamik yönetim işlevi .

İzinler

yürütmeksys.dm_exec_query_plan, bir kullanıcı bir üye olmanız sysadminsabit sunucu rolü veya sunucuda görünüm server state iznine sahip.

Örnekler

Aşağıdaki örnekler nasıl kullanılacağını sys.dm_exec_query_plan dinamik yönetim görünümü.

xml Showplans görüntülemek için yürütmek aşağıdaki sorgu Düzenleyicisi'nde, sorgular SQL Server Management Studio, i ShowPlanXML , query_plan tarafından döndürülen tablosütun sys.dm_exec_query_plan. xml Showplan görüntüler Management Studio Özet bölmesi.xml Showplan bir dosyaya kaydetmek için sağ tıklatın ShowPlanXML , query_plan sütuntıklatın Sonuçları Kaydet, biçiminde dosya adı <dosya_adı>.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-SQL ad hoc toplu işlemleri, saklı yordamları ve kullanıcı tanımlı işlevler gibi toplu olarak adlandırılan bellek alanı içinde önbelleğeplan önbelleği.Her önbelleğe alınan sorgu planı plan tanıtıcısı adı verilen benzersiz bir kimlikle tanıtılır.Bu plan tanıtıcıyla belirtebilirsiniz sys.dm_exec_query_plan dinamik yönetim görünümü için belirli bir yürütme planı almak için Transact-SQL sorgu veya toplu iş.

Yoksa bir Transact-SQL sorgu veya toplu iş belirli bir bağlantı için uzun saat çalışan SQL Server, sorgu veya toplu iş için yürütme planı almak için keşfetmek ne neden gecikme.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_id ve plan_handle server belirli değerleriyle

İlk olarak, sorgu veya toplu iş kullanarak çalışan işlem için sunucu işleminin kimliği'ni (SPID) almak sp_who saklı yordam:

USE master;
GO
exec sp_who;
GO

Tarafından döndürülen sonuç kümesi sp_who , SPID olduğunu gösterir 54.SPID ile kullanabileceğiniz planı tutamacını aşağıdaki sorguyu kullanarak almak içinsys.dm_exec_requestsdinamik yönetim görünümü :

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 0x06000100A27E7C1FA821B10600, olarak belirtebileceğiniz plan_handle bağımsız değişkeni ile sys.dm_exec_query_plan yürütme planı aşağıdaki gibi xml biçiminde almak içinxml biçiminde yavaş çalışan sorgu veya toplu iş için yürütme planı içinde yer alan query_plan tarafından döndürülen tablosütun sys.dm_exec_query_plan.

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

B.Her sorgu planı plan önbellekten

Planı önbellekte bulunan tüm sorgu planları anlık görüntü almak için sorgulayarak önbelleğindeki tüm sorgu planlarını planı tutamaçlarını almak sys.dm_exec_cached_plans dinamik yönetim görünümü.Plan tutamaçları depolanır plan_handle sütun sys.dm_exec_cached_plans.Sonra plan işleyicilerine geçmesine çapraz uygulama işleç kullanın sys.dm_exec_query_plan olarak aşağıdadır.Her planı plan önbelleğinde bulunan içinde için çıktı xml Showplan döndürülen tablosütunquery_plan.

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

C.Kendisi için sunucuya sorgu istatistikleri planı önbellekten topladı her sorgu planı almak

Sunucunun kendisi için tüm sorgu planları, plan önbelleğinde halen toplanan istatistikleri vardır anlık görüntü almak için sorgulayarak bu planlar önbelleğindeki planı tutamaçlarını almak sys.dm_exec_query_stats dinamik yönetim görünümü.Plan tutamaçları depolanır plan_handle sütun sys.dm_exec_query_stats.Sonra plan işleyicilerine geçmesine çapraz uygulama işleç kullanın sys.dm_exec_query_plan olarak aşağıdadır.Her plan için sunucu toplanan istatistikleri şu anda plan önbelleğinde bulunan için çıktı xml Showplan döndürülen tablosütunquery_plan.

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 saattarafından üst beş sorguları hakkında bilgi almak

Aşağıdaki örnek, planları ve ortalama cpu saat üst beş sorguları için verir.

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