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


Hogyan gyűjti a Lekérdezéstár az adatokat?

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-adatbázis a Microsoft Fabricben

Az SQL Server Query Store a repülési adatrögzítőhöz hasonlóan működik, és folyamatosan gyűjti a lekérdezésekkel és tervekkel kapcsolatos fordítási és futásidejű információkat. A lekérdezéssel kapcsolatos adatok megmaradnak a belső táblákban, és nézeteken keresztül jelennek meg a felhasználók számára.

Views

Az alábbi ábrán a Lekérdezéstár nézetei és logikai kapcsolatai láthatók, a fordítási idő adatai kék entitásként jelennek meg:

Lekérdezéstár folyamatnézetei
Leírások megtekintése

View Description
sys.query_store_query_text Az adatbázison végrehajtott egyedi lekérdezési szövegeket jeleníti meg. A lekérdezés szövege előtt és után lévő megjegyzések és szóközök figyelmen kívül lesznek hagyva. A megjegyzések és a szövegen belüli szóközök nem lesznek figyelmen kívül hagyva. Minden tétel utasítás külön lekérdezési szövegbejegyzést hoz létre.
sys.query_context_settings A tervre hatással lévő beállítások egyedi kombinációit mutatja be, amelyek alatt a lekérdezések végrehajtása történik. A különböző tervre hatással lévő beállításokkal végrehajtott lekérdezésszöveg külön lekérdezési bejegyzést hoz létre a Lekérdezéstárban, mert context_settings_id a lekérdezési kulcs része.
sys.query_store_query Lekérdezés-bejegyzések, amelyeket a Lekérdezéstárban külön nyomon követnek és kényszerítenek. Egyetlen lekérdezésszöveg több lekérdezési bejegyzést is létrehozhat, ha az eltérő környezeti beállítások szerint van végrehajtva, vagy ha kívül, vagy különböző Transact-SQL modulokon, például tárolt eljárásokon és eseményindítókon belül hajtják végre.
sys.query_store_plan A lekérdezés becsült tervét mutatja be a fordítási idő statisztikáival. A tárolt terv egyenértékű azzal, amelyet SET SHOWPLAN_XML ON használatával kap.
sys.query_store_runtime_stats_interval A Lekérdezéstár az időt automatikusan generált időablakokra (intervallumokra) osztja, és minden végrehajtott tervhez az adott időköz összesített statisztikáit tárolja. Az intervallum méretét a Statistics Collection Interval (a Management Studióban) vagy INTERVAL_LENGTH_MINUTES az ALTER DATABASE SET Options (Transact-SQL) konfigurációs lehetőség szabályozza.
sys.query_store_runtime_stats A futtatási idő összesített statisztikái a végrehajtott tervekhez. Az összes rögzített metrika négy statisztikai függvény formájában van kifejezve: Átlag, Minimum, Maximum és Szórás.

A Lekérdezéstár nézetekkel kapcsolatos további információkért tekintse meg a Teljesítmény monitorozása a Lekérdezéstár használatával című szakaszában található kapcsolódó nézeteket, függvényeket és eljárásokat.

Lekérdezésfeldolgozás

A Lekérdezéstár a következő kulcsfontosságú pontokon kezeli a lekérdezésfeldolgozó folyamatot:

  1. Amikor egy lekérdezés első alkalommal lesz lefordítva, a rendszer elküldi a lekérdezés szövegét és a kezdeti tervet a Lekérdezéstárba.

  2. Amikor egy lekérdezés újrafordításra kerül, a terv frissül a Lekérdezéstárban. Ha új terv jön létre, a Lekérdezéstár hozzáadja a lekérdezés új tervbejegyzését, és megtartja az előzőeket a végrehajtási statisztikákkal együtt.

  3. A lekérdezés végrehajtásakor a rendszer elküldi a futtatókörnyezeti statisztikákat a Lekérdezéstárnak. A Lekérdezéstár a jelenleg aktív intervallumon belül végrehajtott összes terv összesített statisztikáit pontos állapotban tartja.

  4. A fordítás és az újrafordítási fázisok ellenőrzése során az SQL Server megállapítja, hogy van-e olyan terv a Lekérdezéstárban, amelyet alkalmazni kell az éppen futó lekérdezésre. Ha van egy kényszerített terv, és az eljárás gyorsítótárban lévő terv eltér a kényszerített tervtől, a lekérdezés újrafordításra kerül. Ez gyakorlatilag ugyanúgy működik, mintha a PLAN HINT-et alkalmazták volna az adott lekérdezésre. Ez a folyamat transzparens módon történik a felhasználói alkalmazás számára.

Az alábbi ábra az előző lépésekben ismertetett integrációs pontokat mutatja be:

Lekérdezéstár folyamat

Remarks

Az I/O-terhelés minimalizálása érdekében az új adatok a memóriában lesznek rögzítve. Az írási műveletek ezután várólistára kerülnek, és a lemezre kerülnek. A lekérdezési és tervinformációk, amelyek az alábbi ábrán Plan Store-ként jelennek meg, minimális késéssel lesznek kiürítve. A futásidejű statisztikák a memóriában maradnak a DATA_FLUSH_INTERVAL_SECONDS opció és a SET QUERY_STORE utasítás által meghatározott ideig. A Management Studio Lekérdezéstár párbeszédpanelen megadhatja az adatöblítési időköz (perc) értékét, amelyet a rendszer belsőleg másodpercre konvertál.

Lekérdezéstár folyamatterv

Ha a rendszer összeomlik vagy leállítás történik a 7745-ös nyomkövetési jelző használata közben, a Lekérdezéstár elveszítheti a gyűjtött, de még nem tárolt futtatókörnyezeti adatokat, akár egy meghatározott időkeretig DATA_FLUSH_INTERVAL_SECONDS. Az alapértelmezett 900 másodperces (15 perces) értéket javasoljuk a lekérdezésrögzítési teljesítmény és az adatok rendelkezésre állása közötti egyensúlyként.

Important

A maximális méret (MB) korlát nem szigorúan érvényes. A tárterület méretét csak akkor ellenőrzi a rendszer, ha a Lekérdezéstár adatokat ír lemezre. Ezt az időközt az Adatöblítési időköz érték állítja be. Ha a Lekérdezéstár túllépte a tárméret-ellenőrzések közötti maximális méretkorlátot, az írásvédett üzemmódra vált. Ha a méretalapú törlési mód engedélyezve van, a maximális méretkorlátot érvényesítő törlési mechanizmus is aktiválódik.

Note

Ha a rendszer memóriaterhelés alatt áll, a futásidejű statisztikákat a megadottnál korábbi lemezre lehet kiüríteni DATA_FLUSH_INTERVAL_SECONDS.

A lekérdezéstár adatainak olvasása során a memóriában és a lemezen tárolt adatok transzparensen egyesülnek.

Ha egy munkamenet leáll, vagy az ügyfélalkalmazás újraindul vagy összeomlik, a lekérdezési statisztikák nem lesznek rögzítve.

Query Store lekérdezési terv információ

Lásd még

A teljesítmény monitorozása a Lekérdezéstár segítségével
Ajánlott eljárás a Lekérdezéstár használatával
Lekérdezéstár katalógusnézetei (Transact-SQL)