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:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Elemzési platformrendszer (PDW)
Ezzel optimize for ad hoc workloads a beállítással javíthatja a csomaggyorsítótár hatékonyságát olyan számítási feladatok esetében, amelyek több egyszeri használatú alkalmi köteget tartalmaznak. Ha ez a beállítás be van állítva 1, az adatbázismotor a teljes lefordított csomag helyett egy kis lefordított csomagcsomótárat tárol a csomaggyorsítótárban, amikor egy köteg első alkalommal van lefordítva. Ez a beállítás segíthet csökkenteni a memóriaterhelést, ha nem engedélyezi a tervgyorsítótár feltöltését olyan lefordított tervekkel, amelyeket nem használnak újra. Ennek a beállításnak a engedélyezése azonban befolyásolhatja az egyszeri használatú csomagok hibaelhárításának lehetőségét.
A lefordított csomagcsomó lehetővé teszi az adatbázismotor számára, hogy felismerje, hogy ez az alkalmi köteg korábban lett lefordítva, és csak egy lefordított csomagcsomótárat tárol. Amikor ezt a köteget újra meghívja (lefordítja vagy végrehajtja), az adatbázismotor lefordítja a köteget, eltávolítja a lefordított tervcsomótárat a tervgyorsítótárból, és hozzáadja a teljes lefordított tervet a tervgyorsítótárhoz.
A lefordított tervcsomók a katalógusnézet lekérdezésével és a sys.dm_exec_cached_plans "Lefordított terv" oszlopban cacheobjtype való keresésével találhatók. A csonk egyedi plan_handle. A lefordított tervcsomóponthoz nincs végrehajtási terv társítva, és a tervleíró lekérdezése nem ad vissza grafikus vagy XML-bemutatótervet.
A 8032 nyomkövetési jelző visszaállítja a gyorsítótárkorlát paramétereit az SQL Server 2005 (9.x) RTM-beállításra, amely általában lehetővé teszi a gyorsítótárak nagyobb méretűre állítását. Ezt a beállítást akkor használja, ha a gyakran újrahasznált gyorsítótár-bejegyzések nem férnek el a gyorsítótárban, és ha a optimize for ad hoc workloads beállítás nem tudta megoldani a tervgyorsítótárral kapcsolatos problémát.
Figyelmeztetés
A 8032-as nyomkövetési jelző gyenge teljesítményt okozhat, ha a nagy gyorsítótárak kevesebb memóriát tesznek elérhetővé más memóriafelhasználók, például a pufferkészlet számára.
Megjegyzések
Ha csak az optimize for ad hoc workloads új csomagokat szeretné érinteni 1 , a már a csomaggyorsítótárban lévő csomagokra nincs hatással.
A már gyorsítótárazott lekérdezési tervek azonnali hatásának érdekében a tervgyorsítótárat törölni kell az ALTER DATABASE HATÓKÖRŰ KONFIGURÁCIÓ TÖRLÉSE PROCEDURE_CACHE használatával, vagy az SQL Servernek újra kell indítania.
Recommendations
Ne használjon nagy számú egyszer használatos csomagot a csomaggyorsítótárban. Gyakori okok a következők:
A nem konzisztensen definiált lekérdezési paraméterek adattípusai. Ez különösen a sztringek hosszára vonatkozik, de bármilyen adattípusra alkalmazható, amely maximális, pontosságú vagy skálázható. Ha például egy névvel ellátott
@Greetingparaméter nvarchar(10) néven van átadva egy híváson, és nvarchar(20) a következő híváson, a rendszer külön csomagokat hoz létre minden paramétermérethez.Nem paraméterezett lekérdezések. Ha egy lekérdezés egy vagy több paraméterrel rendelkezik, amelyekhez a rendszer a hard-coded értékeket küldi el az adatbázismotornak, az egyes lekérdezésekhez számos lekérdezési terv létezhet. A használt lekérdezési paraméter adattípusainak és hosszának minden kombinációjához léteznek tervek.
Ha az egyszer használatos csomagok száma az SQL Server adatbázismotor memóriájának jelentős részét veszi igénybe egy OLTP-kiszolgálón, és ezek a csomagok alkalmi csomagok, ezzel a kiszolgálói beállítással csökkentheti a memóriahasználatot ezekkel az objektumokkal.
Ha a optimize for ad hoc workloads beállítás engedélyezve van, nem tekintheti meg az egyszer használatos lekérdezések végrehajtási terveit, mert csak a csomagcsomó van gyorsítótárazva. A környezettől és a számítási feladattól függően az alábbi két funkció lehet hasznos:
Az SQL Server 2016-ban (13.x) bevezetett Lekérdezéstár funkció segítségével gyorsan megtalálhatja a lekérdezésterv módosításai által okozott teljesítménybeli különbségeket. A Lekérdezéstár alapértelmezés szerint engedélyezve van az SQL Server 2022 (16.x) és újabb verzióiban lévő új adatbázisokon.
A kényszerített paraméterezés javíthatja bizonyos adatbázisok teljesítményét a lekérdezés-fordítások és újrafordítások gyakoriságának csökkentésével. A kényszerített paraméterezés előnyeit élvező adatbázisok általában nagy mennyiségű egyidejű lekérdezést tapasztalnak olyan forrásokból, mint például az értékesítési pontok alkalmazásai.
A kényszerített paraméterezés teljesítményproblémákat okozhat a paraméter érzékenysége miatt. További információ: Paraméterérzékeny problémák kivizsgálása és megoldása. Az SQL Server 2022 (16.x) és újabb verziói esetében engedélyezheti a paraméterérzékeny csomag optimalizálását is.
Példák
Az egyszer használatos gyorsítótárazott csomagok számának megkereséséhez futtassa a következő lekérdezést:
SELECT objtype,
cacheobjtype,
SUM(refcounts) AS AllRefObjects,
SUM(CAST(size_in_bytes AS BIGINT)) / 1024 / 1024 AS SizeInMB
FROM sys.dm_exec_cached_plans
WHERE objtype = 'Adhoc'
AND usecounts = 1
GROUP BY objtype, cacheobjtype;