Aracılığıyla paylaş


sys.dm_exec_query_plan_stats (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri Microsoft Fabric'teAzure SQL VeritabanıAzure SQL Yönetilen Örneği SQL veritabanı

Önceden önbelleğe alınmış bir sorgu planı için bilinen son gerçek yürütme planının eşdeğerini döndürür.

Sözdizimi

sys.dm_exec_query_plan_stats ( plan_handle )

Arguments

plan_handle

Yürütülen ve planı plan önbelleğinde bulunan veya şu anda yürütülmekte olan bir toplu iş için sorgu yürütme planını benzersiz olarak tanımlayan belirteç. plan_handlevarbinary(64) şeklindedir.

plan_handle aşağıdaki dinamik yönetim nesnelerinden alınabilir:

Tablo döndürüldü

Sütun adı Veri türü Description
dbid smallint Bu plana karşılık gelen Transact-SQL deyimi derlendiğinde geçerli olan bağlam veritabanının kimliği. Geçici ve hazırlanmış SQL deyimleri için, deyimlerin derlendiği veritabanının kimliği.

Sütun null atanabilir.
objectid int Bu sorgu planı için nesnenin kimliği (örneğin saklı yordam veya kullanıcı tanımlı işlev). Geçici ve hazırlanmış toplu işlemler için bu sütun null olur.

Sütun null atanabilir.
number smallint Numaralandırılmış saklı yordam tamsayısı. Örneğin, uygulama için orders bir yordam grubu , orderproc;1vb. olarak adlandırılabilirorderproc;2. Geçici ve hazırlanmış toplu işlemler için bu sütun null olur.

Sütun null atanabilir.
encrypted bit Karşılık gelen saklı yordamın şifrelenip şifrelenmediğini gösterir.

0 = şifrelenmemiş
1 = şifrelenmiş

Sütun boş değer atanamaz.
query_plan xml plan_handle ile belirtilen gerçek sorgu yürütme planının bilinen son çalışma zamanı Showplan gösterimini içerir. Showplan XML biçimindedir. Geçici Transact-SQL deyimleri, saklı yordam çağrıları ve kullanıcı tanımlı işlev çağrıları gibi her toplu işlem için bir plan oluşturulur.

Sütun null atanabilir.

Açıklamalar

Bu, isteğe bağlı bir özelliktir. Sunucu düzeyinde etkinleştirmek için izleme bayrağı 2451'i kullanın. Veritabanı düzeyinde etkinleştirmek için LAST_QUERY_PLAN_STATS) seçeneğini kullanın.

Bu sistem işlevi , basit sorgu yürütme istatistikleri profil oluşturma altyapısı altında çalışır. Daha fazla bilgi için bkz. Sorgu Profili Oluşturma Altyapısı.

Showplan çıkışı sys.dm_exec_query_plan_stats aşağıdaki bilgileri içerir:

  • Önbelleğe alınan planda bulunan tüm derleme zamanı bilgileri

  • İşleç başına gerçek satır sayısı, toplam sorgu CPU süresi ve yürütme süresi, taşma uyarıları, gerçek DOP, en fazla kullanılan bellek ve verilen bellek gibi çalışma zamanı bilgileri

Aşağıdaki koşullar altında, için döndürülen tablonun sütununda query_plansys.dm_exec_query_plan_stats eşdeğer bir Showplan çıkışı döndürülür:

Aşağıdaki koşullar altında, için döndürülen tablonun sütununda basitleştirilmişquery_plan Showplan çıkışı döndürülürsys.dm_exec_query_plan_stats:

  • Plan sys.dm_exec_cached_plans bulunabilir.

    ve

  • Sorgu yeterince basittir ve genellikle OLTP iş yükünün bir parçası olarak kategorilere ayrılmıştır.

1 Yalnızca kök düğüm işlecini (SELECT) içeren bir Showplan'a başvurur.

Aşağıdaki koşullar altında, içinden sys.dm_exec_query_plan_stats:

Uyarı

XML veri türünde izin verilen iç içe düzey sayısı sınırlaması, 128 iç içe öğe düzeyini karşılayan veya aşan sorgu planlarını döndüremeyecek anlamına gelirsys.dm_exec_query_plan. SQL Server'ın önceki sürümlerinde bu koşul sorgu planının döndürülmesini engelledi ve 6335 hatasını oluşturuyordu. SQL Server 2005 (9.x) Service Pack 2 ve sonraki sürümlerinde sütunu query_plan döndürür NULL.

Permissions

SQL Server 2019 (15.x) ve önceki sürümler sunucuda izin gerektirir VIEW SERVER STATE .

SQL Server 2022 (16.x) ve sonraki sürümleri sunucuda izin gerektirir VIEW SERVER PERFORMANCE STATE .

Örnekler

A. Belirli bir önbelleğe alınmış plan için bilinen son gerçek sorgu yürütme planına bakın

Aşağıdaki örnek, ilginç planı bulmak ve çıkıştan kopyalamak sys.dm_exec_cached_plans için sorgularplan_handle.

SELECT * FROM sys.dm_exec_cached_plans;
GO

Ardından, bilinen son gerçek sorgu yürütme planını elde etmek için ile kopyalanan plan_handle sistem işlevini sys.dm_exec_query_plan_statskullanın.

SELECT * FROM sys.dm_exec_query_plan_stats(< copied plan_handle >);
GO

B. Tüm önbelleğe alınmış planlar için bilinen son gerçek sorgu yürütme planına bakın

SELECT * FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle) AS qps;
GO

C. Belirli bir önbelleğe alınmış plan ve sorgu metni için bilinen son gerçek sorgu yürütme planına bakın

SELECT * FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle) AS qps
WHERE st.text LIKE 'SELECT * FROM Person.Person%';
GO

D. Tetikleyici için önbelleğe alınmış olaylara bakın

SELECT * FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle)
WHERE objtype = 'Trigger';
GO