Megosztás a következőn keresztül:


sys.dm_exec_query_plan_stats (Transact-SQL)

A következőkre vonatkozik: Az SQL Server 2019 (15.x) és újabb verziói az Azure SQL DatabaseAzure SQL Managed InstanceSQL Database-adatbázist a Microsoft Fabricben

Egy korábban gyorsítótárazott lekérdezési terv utolsó ismert tényleges végrehajtási tervének megfelelőt adja vissza.

Szemantika

sys.dm_exec_query_plan_stats ( plan_handle )

Arguments

plan_handle

Egy jogkivonat, amely egyedileg azonosítja a végrehajtott köteg lekérdezés-végrehajtási tervét, és a csomagja a terv gyorsítótárában található, vagy éppen fut. plan_handlevarbinary(64).

A plan_handle a következő dinamikus felügyeleti objektumokból szerezhető be:

Visszaadott tábla

Oszlop név Adattípus Description
dbid smallint Annak a környezeti adatbázisnak az azonosítója, amely a tervnek megfelelő Transact-SQL utasítás fordításakor volt érvényben. Alkalmi és előkészített SQL-utasítások esetén annak az adatbázisnak az azonosítója, amelyben az utasítások fordítása megtörtént.

Az oszlop null értékű.
objectid int A lekérdezésterv objektumának azonosítója (például tárolt eljárás vagy felhasználó által definiált függvény). Alkalmi és előkészített kötegek esetén ez az oszlop null értékű.

Az oszlop null értékű.
number smallint Számozott tárolt eljárás egésze. Előfordulhat például, hogy az orders alkalmazáshoz tartozó eljárások egy csoportja elnevezhető orderproc;1, orderproc;2és így tovább. Alkalmi és előkészített kötegek esetén ez az oszlop null értékű.

Az oszlop null értékű.
encrypted bit Azt jelzi, hogy a megfelelő tárolt eljárás titkosítva van-e.

0 = nincs titkosítva
1 = titkosított

Az oszlop nem null értékű.
query_plan xml A plan_handle megadott tényleges lekérdezés-végrehajtási terv utolsó ismert futtatókörnyezeti megjelenítési tervét tartalmazza. A Showplan XML formátumú. Minden olyan köteghez létrehozunk egy csomagot, amely például alkalmi Transact-SQL utasításokat, tárolt eljáráshívásokat és felhasználó által definiált függvényhívásokat tartalmaz.

Az oszlop null értékű.

Megjegyzések

Ez egy bejelentkezési funkció. A kiszolgáló szintjén való engedélyezéshez használja a 2451-es nyomkövetési jelzőt. Az adatbázis szintjén való engedélyezéshez használja az LAST_QUERY_PLAN_STATSALTER DATABASE SCOPED CONFIGURATION lehetőséget.

Ez a rendszerfüggvény az egyszerűsített lekérdezésvégrehajtási statisztikák profilkészítési infrastruktúrája alatt működik. További információért lásd: lekérdezésprofilozási infrastruktúra.

A Showplan kimenete sys.dm_exec_query_plan_stats a következő információkat tartalmazza:

  • A gyorsítótárazott tervben található összes fordítási idő információ

  • Futtatókörnyezeti információk, például az operátoronkénti sorok tényleges száma, a lekérdezés teljes processzorideje és végrehajtási ideje, a kiömléses figyelmeztetések, a tényleges DOP, a maximálisan használt memória és a megadott memória

A következő feltételek mellett a tényleges végrehajtási tervnek megfelelő Showplan-kimenet lesz visszaadva a query_plan visszaadott tábla oszlopában a következőhöz sys.dm_exec_query_plan_stats:

  • A terv sys.dm_exec_cached_plans található.

    és

  • A végrehajtott lekérdezés összetett vagy erőforrás-használatú.

A következő feltételek mellett egy egyszerűsített1 Showplan-kimenet lesz visszaadva a query_plan visszaadott tábla oszlopában a következőhöz sys.dm_exec_query_plan_stats:

  • A terv sys.dm_exec_cached_plans található.

    és

  • A lekérdezés elég egyszerű, általában egy OLTP-számítási feladat részeként kategorizálva.

1 Olyan showplanra hivatkozik, amely csak a gyökércsomópont-operátort (SELECT) tartalmazza.

A következő feltételek mellett a függvény nem ad vissza kimenetetsys.dm_exec_query_plan_stats:

Megjegyzés:

Az XML-adattípusban engedélyezett beágyazott szintek számának korlátozása azt jelenti, hogy nem lehet olyan lekérdezési terveket visszaadni sys.dm_exec_query_plan , amelyek megfelelnek vagy meghaladják a beágyazott elemek 128 szintjét. Az SQL Server korábbi verzióiban ez a feltétel megakadályozta, hogy a lekérdezésterv visszatérjen, és a 6335-ös hibát generálja. Az SQL Server 2005 (9.x) Service Pack 2 és újabb verzióiban az query_plan oszlop ad vissza NULL.

Permissions

Az SQL Server 2019 (15.x) és a korábbi verziók engedélyre szorulnak VIEW SERVER STATE a kiszolgálón.

Az SQL Server 2022 (16.x) és újabb verzióinak engedélyre van szükségük VIEW SERVER PERFORMANCE STATE a kiszolgálón.

Példák

A. Tekintse meg egy adott gyorsítótárazott terv utolsó ismert tényleges lekérdezés-végrehajtási tervét

Az alábbi példa lekérdezi sys.dm_exec_cached_plans az érdekes terv megkeresését és a kimenetből való másolását plan_handle .

SELECT * FROM sys.dm_exec_cached_plans;
GO

Ezután az utolsó ismert tényleges lekérdezés-végrehajtási terv beszerzéséhez használja a kimásolt plan_handle rendszerfüggvényt sys.dm_exec_query_plan_stats.

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

B. Tekintse meg az összes gyorsítótárazott csomag utolsó ismert tényleges lekérdezés-végrehajtási tervét

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. Tekintse meg egy adott gyorsítótárazott terv és lekérdezés szövegének utolsó ismert tényleges lekérdezés-végrehajtási tervét

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. Az eseményindító gyorsítótárazott eseményeinek megtekintése

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