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 2016 (13.x) és újabb verziók
Azure SQL Database
Felügyelt Azure SQL-példány
Azure 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.
- A lekérdezéstár Azure SQL Database-ben való működtetéséről további információt A lekérdezéstár üzemeltetése az Azure SQL Database-bencímű témakörben talál.
- A végrehajtható információk felderítéséről és a lekérdezéstár teljesítményének finomhangolásáról további információt a Teljesítmény finomhangolása a Lekérdezéstárcímű témakörben talál.
- A lekérdezési tervek alkalmazáskód módosítása nélküli alakításáról további információt Lekérdezéstár tippekcímű témakörben talál.
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_WRITESQL 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
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.
Az Adatbázis tulajdonságai párbeszédpanelen válassza a Lekérdezéstár lapot.
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.
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.
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).
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.
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.
Kapcsolódó nézetek, függvények és eljárások
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:
Kapcsolódó tartalom
- Tárolt lekérdezéstári eljárások (Transact-SQL)
- Lekérdezéstár katalógusnézetei (Transact-SQL)
- sys.database_query_store_options (Transact-SQL)
- élő lekérdezési statisztikák
- Tevékenységfigyelő
- Hogyan gyűjti a Lekérdezéstár az adatokat?
- Monitorozás és teljesítmény optimalizálás
- Teljesítményfigyelési és hangolási eszközök
- A lekérdezéstár használata In-Memory OLTP-vel
- Legjobb gyakorlatok a számítási feladatok figyelésére a Lekérdezéstárral
- Ajánlott eljárások a lekérdezéstár kezeléséhez
- Teljesítmény finomhangolása a Lekérdezéstár
- Query Store irányelvek
- Lekérdezéstár használati forgatókönyvei
- Tevékenységfigyelő megnyitása az SQL Server Management Studióban (SSMS)