Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Az SQL Server 2019 (15.x) és újabb verziói
az Azure SQL Database
Azure SQL Managed Instance
SQL 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:
- sys.dm_exec_cached_plans
- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_procedure_stats
- sys.dm_exec_trigger_stats
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:
A használatával
plan_handlemegadott lekérdezési terv ki lett távolítva a tervgyorsítótárból.vagy
A lekérdezési terv először nem volt gyorsítótárazható. További információ: Végrehajtási terv gyorsítótárazása és újrafelhasználása.
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