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


Teljesítmény monitorozása a Lekérdezéstár használatával

A következőkre vonatkozik: Sql Server 2016 (13.x) és újabb verziók Azure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse Analytics (csak dedikált SQL-készlet)SQL-adatbázis a Microsoft Fabricben

A Lekérdezéstár funkció betekintést nyújt az SQL Server, az Azure SQL Database, a Fabric SQL Database, az Azure SQL Managed Instance és az Azure Synapse Analytics lekérdezéstervének kiválasztásába és teljesítményébe. A Lekérdezéstár leegyszerűsíti a teljesítmény hibaelhárítását azáltal, hogy segít gyorsan megtalálni a lekérdezésterv módosításai által okozott teljesítménybeli különbségeket. A Lekérdezéstár automatikusan rögzíti a lekérdezések, tervek és futásidejű statisztikák előzményeit, és megőrzi ezeket a felülvizsgálathoz. Időablakok szerint választja el az adatokat, így láthatja az adatbázis használati mintáit, és megértheti, hogy mikor történtek változások a lekérdezéstervben a kiszolgálón.

A Lekérdezéstárat az ALTER DATABASE SET beállítási lehetőséggel konfigurálhatja.

Important

Ha a Query Store-t használja az SQL Server 2016-ban (13.x) a megfelelő időben végzett számítási feladatok elemzéséhez, tervezze meg, hogy a lehető leghamarabb telepítse a teljesítményskálázhatósági javításokat a KB 4340759 .

A lekérdezéstár engedélyezése

  • A Lekérdezéstár alapértelmezés szerint engedélyezve van az új Azure SQL Database és az Azure SQL Managed Instance-adatbázisok esetében.
  • A Lekérdezéstár alapértelmezés szerint nincs engedélyezve az SQL Server 2016 (13.x), az SQL Server 2017 (14.x), az SQL Server 2019 (15.x) esetében. Alapértelmezés szerint engedélyezve van az READ_WRITE SQL Server 2022-től (16.x) kezdődő új adatbázisok módban. A teljesítményelőzmények jobb nyomon követéséhez, a lekérdezéstervekkel kapcsolatos problémák elhárításához és az SQL Server 2022 új képességeinek engedélyezéséhez (16.x) javasoljuk, hogy engedélyezze a Lekérdezéstárat minden adatbázisban.
  • A Lekérdezéstár alapértelmezés szerint nincs engedélyezve az új Azure Synapse Analytics-adatbázisokhoz.

A Lekérdezéstár lap használata az SQL Server Management Studióban

  1. Az Object Explorerben kattintson a jobb gombbal egy adatbázisra, majd válassza a Tulajdonságoklehetőséget.

    Note

    A Management Studio legalább 16-os verzióját igényli.

  2. Az Adatbázis tulajdonságai párbeszédpanelen válassza a Lekérdezéstár lapot.

  3. A Üzemmód (Kért) mezőben válassza ki a Olvasás íráslehetőséget.

Használja a(z) Transact-SQL utasításokat

A ALTER DATABASE utasítással engedélyezheti a lekérdezéstárat egy adott adatbázishoz. Például:

ALTER DATABASE <database_name>
SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);

A Fabric SQL-adatbázisban a "Query Store" ALTER DATABASE-konfigurálási lehetőségei jelenleg korlátozottak.

Az Azure Synapse Analyticsben engedélyezze a lekérdezéstárat további beállítások nélkül, például:

ALTER DATABASE <database_name>
SET QUERY_STORE = ON;

A Lekérdezéstárhoz kapcsolódó további szintaxisbeállításokért lásd az ALTER DATABASE SET beállításait.

Note

A Lekérdezéstár nem engedélyezhető az adatbázisokhoz vagy master adatbázisokhoztempdb.

Important

A Lekérdezéstár engedélyezéséről és a számítási feladathoz való igazításáról a "A lekérdezéstárral kapcsolatos legjobb gyakorlatok" dokumentumban olvashat.

Információk a lekérdezéstárban

Az SQL Server adott lekérdezéseinek végrehajtási tervei általában számos különböző okból alakulnak ki, például a statisztikák változásai, sémamódosítások, indexek létrehozása/törlése stb. miatt. Az eljárásgyorsítótár (ahol a gyorsítótárazott lekérdezési tervek tárolódnak) csak a legújabb végrehajtási tervet tárolja. A tervek a memóriaterhelés miatt a tervgyorsítótárból is ki lesznek távolítva. Ennek eredményeképpen a végrehajtási terv módosításai által okozott lekérdezési teljesítményregressziók nem triviálisak és időigényesek lehetnek a feloldásukhoz.

Mivel a Lekérdezéstár lekérdezésenként több végrehajtási tervet is megtart, szabályzatokat kényszeríthet arra, hogy a lekérdezésfeldolgozó egy adott végrehajtási tervet használjon egy lekérdezéshez. Ezt terv-kényszerítésnek nevezzük. A Lekérdezéstárban való tervezés a Lekérdezésmutatók lekérdezési tipphez hasonló mechanizmussal érhető el, de nem igényel módosítást a felhasználói alkalmazásokban. A terv kényszerítése nagyon rövid idő alatt meg tudja oldani a tervmódosítás által okozott lekérdezési teljesítményregressziót.

Note

A Lekérdezéstár olyan DML-utasítások terveit tárolja, mint a SELECT, INSERT, UPDATE, DELETE, MERGEés BULK INSERT.

A Lekérdezéstár terv szerint nem gyűjt terveket olyan DDL-utasításokhoz, mint például CREATE INDEXa , stb. A Lekérdezéstár az alapul szolgáló DML-utasításokhoz tartozó csomagok gyűjtésével rögzíti az összesített erőforrás-felhasználást. A Lekérdezéstár például megjelenítheti az új index feltöltéséhez belsőleg végrehajtott SELECT és INSERT utasításokat.

A Lekérdezéstár alapértelmezés szerint nem gyűjt adatokat natívan lefordított tárolt eljárásokhoz. A sys.sp_xtp_control_query_exec_stats használatával engedélyezheti az adatgyűjtést natívan lefordított tárolt eljárásokhoz.

Várakozási statisztikák egy másik információforrás, amely segít a teljesítményproblémák elhárításában az adatbázismotorban. A várakozási statisztikák hosszú ideig csak példányszinten voltak elérhetők, ami megnehezítette a várakozások visszakövetését egy adott lekérdezésre. Az SQL Server 2017 -től (14.x) és az Azure SQL Database-től kezdve a Lekérdezéstár tartalmaz egy dimenziót, amely nyomon követi a várakozási statisztikákat. Az alábbi példa lehetővé teszi, hogy a lekérdezéstár várakozási statisztikákat gyűjtsön.

ALTER DATABASE <database_name>
SET QUERY_STORE = ON ( WAIT_STATS_CAPTURE_MODE = ON );

A Lekérdezéstár funkció használatának gyakori forgatókönyvei a következők:

  • A terv teljesítményregressziójának gyors megkeresése és javítása az előző lekérdezési terv kényszerítésével. Javítsa ki azokat a lekérdezéseket, amelyeknek a teljesítményük romlott a végrehajtási terv változásai miatt a közelmúltban.
  • Határozza meg, hogy egy lekérdezés hányszor lett végrehajtva egy adott időablakban, és segítsen a DBA-nak a teljesítményerőforrás-problémák elhárításában.
  • Azonosítsa az elmúlt x órában a n lekérdezéseket végrehajtási idő, memóriahasználat stb. alapján.
  • Az adott lekérdezéshez tartozó lekérdezéstervek előzményeinek naplózása.
  • Elemezze egy adott adatbázis erőforrás-használati mintáit (CPU, I/O és Memória).
  • Azonosítsa az erőforrásokra várakozó leggyakoribb n lekérdezéseket.
  • Egy adott lekérdezés vagy terv várakozási jellegének megismerése.

A lekérdezéstár három tárolót tartalmaz:

  • egy tervtároló a végrehajtási terv adatainak megőrzéséhez.
  • egy futtatási statisztikák tároló a végrehajtási statisztikák adatainak megőrzése céljából.
  • a várakozási statisztikák tároló a várakozási statisztikák adatainak tartós megőrzésére.

A tervtárban egy lekérdezésre tárolható egyedi tervek számát a max_plans_per_query konfigurációs opció korlátozza. A teljesítmény növelése érdekében az információk aszinkron módon vannak megírva az áruházakba. A helyhasználat minimalizálása érdekében a futtatókörnyezet-statisztikában lévő futtatókörnyezet végrehajtási statisztikái rögzített időkeretben vannak összesítve. Az ezekben az üzletekben lévő információk a Lekérdezéstár katalógusnézeteinek lekérdezésével láthatók.

Az alábbi lekérdezés a lekérdezésekről, azok terveiről, fordítási idejéről és futásidejű statisztikáiról a Lekérdezéstárból ad vissza információkat.

SELECT Txt.query_text_id, Txt.query_sql_text, Pln.plan_id, Qry.*, RtSt.*
FROM sys.query_store_plan AS Pln
INNER JOIN sys.query_store_query AS Qry
    ON Pln.query_id = Qry.query_id
INNER JOIN sys.query_store_query_text AS Txt
    ON Qry.query_text_id = Txt.query_text_id
INNER JOIN sys.query_store_runtime_stats RtSt
ON Pln.plan_id = RtSt.plan_id;

Másodlagos replikák lekérdezési kiszolgálója

A következőkre vonatkozik: SQL Server 2025 (17.x), Azure SQL Database

A másodlagos replikák lekérdezéstára funkció ugyanazt a Lekérdezéstár funkciót teszi lehetővé a másodlagos replika-számítási feladatokon, amelyek az elsődleges replikákhoz érhetők el. Ha a másodlagos replikák lekérdezéstára engedélyezve van, a replikák elküldik a lekérdezés-végrehajtási adatokat, amelyeket általában a Lekérdezéstárban tárolnának vissza az elsődleges replikába. Az elsődleges replika ezután megőrzi az adatokat a saját lekérdezéstárában lévő lemezen. Lényegében egy lekérdezéstár van megosztva az elsődleges és az összes másodlagos replika között. A lekérdezéstár az elsődleges replikán található, és az összes replika adatait együtt tárolja.

További információkért lásd: Másodlagos replikák lekérdezési tárolója.

Használja a Regressed Queries funkciót

A Lekérdezéstár engedélyezése után frissítse az Objektumkezelő panel adatbázis-részét a Lekérdezéstár szakasz hozzáadásához.

Képernyőkép a Lekérdezéstár jelentési fájáról az SSMS Object Explorerben.

Note

Az Azure Synapse Analytics esetében a Lekérdezéstár nézetei Rendszernézetek alatt érhetők el az Objektumkezelő panel adatbázis-részén.

Válassza Regressed Queries lehetőséget a Regressed Queries panel megnyitásához az SQL Server Management Studióban. A regrediált lekérdezéseket tartalmazó panelen megtekintheti a lekérdezéseket és a végrehajtási terveket a Lekérdezéstárban. A felül található legördülő listamezőkkel különböző feltételek alapján szűrheti a lekérdezéseket: Időtartam (ms) (Alapértelmezett), CPU-idő (ms), logikai olvasások (KB), logikai írások (KB), fizikai olvasások (KB), CLR-idő (ms), DOP, memóriahasználat (KB), sorszám, használt naplómemória (KB), használt temp DB-memória (KB) és várakozási idő (ms).

Jelöljön ki egy tervet a grafikus lekérdezési terv megtekintéséhez. A gombok segítségével megtekintheti a forrás lekérdezést, kényszerítheti és kényszerítheti le a lekérdezéstervet, válthat a rács- és diagramformátumok között, összehasonlíthatja a kijelölt terveket (ha több van kiválasztva), és frissítheti a megjelenítést.

Képernyőkép az SQL Server Regressed Queries jelentésről az SSMS Object Explorerben.

A terv kényszerítéséhez válasszon ki egy lekérdezést és egy tervet, majd válassza a Terv kényszerítéselehetőséget. Csak azokat a terveket kényszerítheti ki, amelyeket a lekérdezésterv szolgáltatás mentett, és amelyek még mindig megvannak a lekérdezésterv gyorsítótárában.

Várakozási lekérdezések keresése

Az SQL Server 2017 -től (14.x) és az Azure SQL Database-től kezdve a lekérdezésenkénti várakozási statisztikák idővel elérhetők a Lekérdezéstárban.

A Lekérdezéstárban a várakozási típusok a várakozási kategóriákba vannak kombinálva. A várakozási kategóriák várakozási típusokhoz való leképezése sys.query_store_wait_stats (Transact-SQL)érhető el.

Válassza Lekérdezési várakozási statisztikák lehetőséget a Lekérdezési várakozási statisztikák panel megnyitásához az SQL Server Management Studio 18.0-s vagy újabb verzióiban. A Lekérdezési várakozási statisztikák panel egy sávdiagramot jelenít meg, amely a lekérdezéstár felső várakozási kategóriáit tartalmazza. A felső legördülő listával a várakozási idő összesítési feltételét választhatja ki: avg, max, min, std dev és teljes (alapértelmezett).

Képernyőkép az SQL Server query wait statistics jelentéséről az SSMS Object Explorerben.

Válasszon ki egy várakozási kategóriát a sávon, és megjelenik a kijelölt várakozási kategória részletes nézete. Ez az új sávdiagram azokat a lekérdezéseket tartalmazza, amelyek hozzájárultak a várakozási kategóriához.

Képernyőkép az SQL Server Query Wait Statistics részletes nézetéről az SSMS Object Explorerben.

A felül található legördülő lista segítségével szűrheti a lekérdezéseket a kiválasztott várakozási kategória különböző várakozási időfeltételei alapján: avg, max, min, std dev és teljes (alapértelmezett). Jelöljön ki egy tervet a grafikus lekérdezési terv megtekintéséhez. A gombok segítségével megtekintheti a forrás lekérdezést, kényszerítheti és lekényszerítheti a lekérdezéstervet, és frissítheti a megjelenítést.

várakozási kategóriák különböző várakozási típusokat természetük szerint hasonló gyűjtőkbe kombinálnak. A különböző várakozási kategóriák eltérő nyomon követési elemzést igényelnek a probléma megoldásához, de az ugyanabból a kategóriából származó várakozási típusok nagyon hasonló hibaelhárítási élményhez vezetnek, és ha az érintett lekérdezést a várakozások fölé irányítja, az hiányzó darab lenne a legtöbb ilyen vizsgálat sikeres elvégzéséhez.

Íme néhány példa arra, hogyan kaphat további elemzéseket a számítási feladatokról a lekérdezéstár várakozási kategóriáinak bevezetése előtt és után:

Korábbi élmény Új felület Action
Adatbázisonként magas a RESOURCE_SEMAPHORE várakozások száma. Nagy memória várakozás a Lekérdezéstárban adott lekérdezések esetén Keresse meg a legtöbb memóriaigényű lekérdezést a Lekérdezéstárban. Ezek a lekérdezések valószínűleg késleltetik az érintett lekérdezések további előrehaladását. Érdemes lehet MAX_GRANT_PERCENT lekérdezési tippet használni ezekhez a lekérdezésekhez vagy az érintett lekérdezésekhez.
Adatbázisonként magas LCK_M_X várakozások Magas zárolási várakozások adott lekérdezésekhez a Lekérdezéstárban Ellenőrizze az érintett lekérdezések lekérdezési szövegeit, és azonosítsa a célentitásokat. Keresse meg a Lekérdezéstárban azokat a lekérdezéseket, amelyek ugyanazt az entitást módosítják, és amelyeket gyakran hajtanak végre és/vagy nagy időtartamúak. A lekérdezések azonosítása után fontolja meg az alkalmazáslogika módosítását az egyidejűség javítása érdekében, vagy használjon kevésbé korlátozó elkülönítési szintet.
Adatbázisonkénti magas PAGEIOLATCH_SH várakozások Magas puffer IO várakozások a Lekérdezéstárban adott lekérdezések esetén Keresse meg azokat a lekérdezéseket, amelyeknél sok fizikai olvasás történik a Lekérdezéstárban. Ha magas IO várakozással egyeznek meg a lekérdezésekkel, érdemes lehet indexet létrehozni a mögöttes entitáson, hogy a keresések helyett kereséseket végezhessenek, így minimalizálva a IO lekérdezések terhelését.
Magas szintű SOS_SCHEDULER_YIELD várakozások adatbázisonként Magas cpu-várakozások a Lekérdezéstárban adott lekérdezések esetén Keresse meg a legtöbb processzort használó lekérdezést a Lekérdezéstárban. Ezek között azonosítsa azokat a lekérdezéseket, amelyek esetében a magas cpu-trend korrelál az érintett lekérdezésekre váró magas processzorhasználattal. Összpontosítson a lekérdezések optimalizálására – lehet egy tervregresszió, vagy egy hiányzó index.

Konfigurációs lehetőségek

A lekérdezéstár paramétereinek konfigurálásához rendelkezésre álló beállításokért lásd ALTER DATABASE SET-beállításokat (Transact-SQL).

A lekérdezéstár aktuális beállításainak meghatározásához kérdezze le a sys.database_query_store_options nézetet. Az értékekkel kapcsolatos további információkért lásd: sys.database_query_store_options.

A konfigurációs beállítások Transact-SQL utasítások használatával történő beállításáról a Option Managementcímű témakörben talál példákat.

Note

Az Azure Synapse Analytics esetében a Lekérdezéstár más platformokhoz hasonlóan engedélyezhető, de a további konfigurációs beállítások nem támogatottak.

A Lekérdezéstár megtekintése és kezelése a Management Studióban vagy az alábbi nézetek és eljárások használatával.

Lekérdezéstár-függvények

A függvények segítenek a lekérdezéstárban végzett műveletekben.

Lekérdezéstár katalógusnézetei

A katalógusnézetek információkat tartalmaznak a lekérdezéstárról.

A Lekérdezéstár tárolt eljárásai

A tárolt eljárások konfigurálják a lekérdezéstárat.

sp_query_store_consistency_check (Transact-SQL)1

1 Szélsőséges esetekben a Lekérdezéstár belső hibák miatt HIBA állapotot adhat meg. Az SQL Server 2017-től kezdve (14.x) ha ez történik, a Lekérdezéstár az érintett adatbázisban tárolt sp_query_store_consistency_check művelet végrehajtásával állítható helyre. További részletekért lásd a sys.database_query_store_options a actual_state_desc oszlop leírásában.

Lekérdezéstár karbantartása

A lekérdezéstár karbantartására és kezelésére vonatkozó ajánlott eljárásokat és javaslatokat ebben a cikkben bővítettük: Ajánlott eljárások a lekérdezéstárkezeléséhez.

Teljesítményvizsgálat és hibaelhárítás

A Lekérdezéstár teljesítményhangolásának megismeréséhez további információért tekintse meg a Teljesítmény finomhangolása a Lekérdezéstárralcímű témakört.

Egyéb teljesítménytémakörök: