Az Azure Database for MySQL teljesítményének monitorozása a Lekérdezéstár használatával

A következőkre vonatkozik: Azure Database for MySQL – Önálló kiszolgáló

Fontos

Az önálló Azure Database for MySQL-kiszolgáló a kivonási útvonalon van. Határozottan javasoljuk, hogy frissítsen rugalmas Azure Database for MySQL-kiszolgálóra. További információ a rugalmas Azure Database for MySQL-kiszolgálóra való migrálásról: Mi történik az önálló Azure Database for MySQL-kiszolgálóval?

A következőkre vonatkozik: Azure Database for MySQL 5.7, 8.0

Az Azure Database for MySQL Lekérdezéstár funkciója lehetővé teszi a lekérdezési teljesítmény időbeli nyomon követését. 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 leghosszabb ideig futó és a legtöbb erőforrás-igényes lekérdezést. A Lekérdezéstár automatikusan rögzíti a lekérdezések és a futtatókörnyezet statisztikáinak előzményeit, és megőrzi azokat a felülvizsgálathoz. Időablakok szerint választja el az adatokat, így láthatja az adatbázis használati mintáit. Az összes felhasználó, adatbázis és lekérdezés adatait a mysql-sémaadatbázis tárolja az Azure Database for MySQL-példányban.

Gyakori forgatókönyvek a Lekérdezéstár használatához

A lekérdezéstár számos forgatókönyvben használható, beleértve a következőket:

  • Regressziós lekérdezések észlelése
  • Annak meghatározása, hogy egy lekérdezés hány alkalommal lett végrehajtva egy adott időablakban
  • Egy lekérdezés átlagos végrehajtási idejének összehasonlítása az időablakokban a nagy eltérések megtekintéséhez

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

A Lekérdezéstár egy bejelentkezési funkció, ezért alapértelmezés szerint nem aktív egy kiszolgálón. A lekérdezéstár globálisan engedélyezve van vagy le van tiltva egy adott kiszolgálón lévő összes adatbázis esetében, és nem kapcsolható be vagy ki adatbázisonként.

Lekérdezéstár engedélyezése az Azure Portal használatával

  1. Jelentkezzen be az Azure Portalra, és válassza ki az Azure Database for MySQL-kiszolgálót.
  2. Válassza a Kiszolgálóparaméterek lehetőséget a menü Gépház szakaszában.
  3. Keresse meg a query_store_capture_mode paramétert.
  4. Állítsa az értéket az ALL és a Save értékre.

Várakozási statisztikák engedélyezése a lekérdezéstárban:

  1. Keresse meg a query_store_wait_sampling_capture_mode paramétert.
  2. Állítsa az értéket az ALL és a Save értékre.

Az első adatköteg legfeljebb 20 percet őrizhet meg a mysql-adatbázisban.

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

A Lekérdezéstár két tárolóval rendelkezik:

  • Futtatókörnyezeti statisztikai tároló a lekérdezés-végrehajtási statisztikák adatainak megőrzéséhez.
  • Várakozási statisztikák tárolója a várakozási statisztikák adatainak megőrzéséhez.

A helyhasználat minimalizálása érdekében a futtatókörnyezet-végrehajtási statisztikák a futásidejű statisztikai tárban rögzített, konfigurálható időkereten vannak összesítve. Az ezekben az üzletekben lévő információk a lekérdezéstár nézeteinek lekérdezésével láthatók.

Az alábbi lekérdezés a Lekérdezéstárban lévő lekérdezésekkel kapcsolatos információkat adja vissza:

SELECT * FROM mysql.query_store;

Vagy a várakozási statisztikák lekérdezése:

SELECT * FROM mysql.query_store_wait_stats;

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

Megjegyzés:

A várakozási statisztikákat nem szabad engedélyezni a számítási feladatok csúcsidőszakában, vagy a bizalmas számítási feladatok esetében határozatlan ideig be kell kapcsolni.
A magas cpu-kihasználtsággal vagy alacsonyabb virtuális magokkal konfigurált kiszolgálókon futó számítási feladatok esetében a várakozási statisztikák engedélyezésekor körültekintően járjon el. A beállítás nem kapcsolható be határozatlan ideig.

A várakozási eseménytípusok a különböző várakozási eseményeket hasonlóság alapján egyesítik a gyűjtőkben. A Lekérdezéstár megadja a várakozási esemény típusát, az adott várakozási esemény nevét és a kérdéses lekérdezést. Ha képes korrelálni ezt a várakozási információt a lekérdezés futtatókörnyezeti statisztikáival, mélyebben megismerheti, hogy mi járul hozzá a lekérdezési teljesítmény jellemzőihez.

Íme néhány példa arra, hogyan nyerhet további betekintést a számítási feladatokba a lekérdezéstár várakozási statisztikáinak használatával:

Megfigyelés Action
Magas zárolási várakozások 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 az azonos entitást módosító, gyakran és/vagy nagy időtartamú lekérdezéseket. 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.
Magas puffer I/O-várakozások Keresse meg a lekérdezéseket nagy számú fizikai olvasással a Lekérdezéstárban. Ha magas I/O-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. Ez minimálisra csökkentené a lekérdezések I/O-terhelését. Ellenőrizze a kiszolgáló teljesítmény Javaslatok a portálon, hogy vannak-e olyan indexjavaslatok a kiszolgálóhoz, amelyek optimalizálnák a lekérdezéseket.
Magas memória várakozások 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. Ellenőrizze a kiszolgáló teljesítmény Javaslatok a portálon, hogy vannak-e olyan indexjavaslatok, amelyek optimalizálnák ezeket a lekérdezéseket.

Konfigurációs lehetőségek

Ha a Lekérdezéstár engedélyezve van, 15 perces összesítési időszakokban menti az adatokat, ablakonként legfeljebb 500 különböző lekérdezést.

A lekérdezéstár paramétereinek konfigurálásához az alábbi lehetőségek állnak rendelkezésre.

Paraméter Ismertetés Alapértelmezett Tartomány
query_store_capture_mode Kapcsolja be/ki a lekérdezéstár funkciót az érték alapján. Megjegyzés: Ha performance_schema ki van kapcsolva, a query_store_capture_mode bekapcsolása bekapcsolja performance_schema és a funkcióhoz szükséges teljesítményséma-eszközök egy részhalmazát. ALL (összes) NONE, ALL
query_store_capture_interval A lekérdezés tárolja a rögzítési időközt percekben. Lehetővé teszi a lekérdezési metrikák összesítési időközének megadását 15 5 - 60
query_store_capture_utility_queries A be- vagy kikapcsolással rögzítheti a rendszerben futtatott összes segédprogram-lekérdezést. NEM IGEN, NEM
query_store_retention_period_in_days Az adatok a lekérdezéstárban való megőrzésére szolgáló napokra vonatkozó időablak. 7 1 - 30

A következő beállítások kifejezetten a várakozási statisztikákra vonatkoznak.

Paraméter Ismertetés Alapértelmezett Tartomány
query_store_wait_sampling_capture_mode Engedélyezi a várakozási statisztikák be- és kikapcsolását. NINCS NONE, ALL
query_store_wait_sampling_frequency Másodpercek alatt megváltoztatja a várakozási mintavételezés gyakoriságát. 5-300 másodperc. 30 5-300

Megjegyzés:

Jelenleg query_store_capture_mode felülírja ezt a konfigurációt, ami azt jelenti, hogy query_store_capture_modeés query_store_wait_sampling_capture_mode is engedélyezni kell az ALL számára a várakozási statisztikák működéséhez. Ha query_store_capture_mode ki van kapcsolva, akkor a várakozási statisztikák is ki lesznek kapcsolva, mivel a várakozási statisztikák az engedélyezett performance_schema és a lekérdezéstár által rögzített query_text használják.

Az Azure Portal vagy az Azure CLI használatával kérhet le vagy állíthat be másik értéket egy paraméterhez.

Nézetek és függvények

A Lekérdezéstár megtekintése és kezelése az alábbi nézetek és függvények használatával. A választójoggal rendelkező nyilvános szerepkörben bárki használhatja ezeket a nézeteket az adatok lekérdezéstárban való megtekintéséhez. Ezek a nézetek csak a mysql-adatbázisban érhetők el.

A lekérdezések normalizálása a konstansok és konstansok eltávolítása után a szerkezetük alapján normalizálódik. Ha két lekérdezés azonos, kivéve a literális értékeket, akkor ugyanazzal a kivonatokkal rendelkeznek.

mysql.query_store

Ez a nézet a Lekérdezéstár összes adatát visszaadja. Minden különálló adatbázis-azonosítóhoz, felhasználói azonosítóhoz és lekérdezésazonosítóhoz egy sor tartozik.

Név Adattípus IS_NULLABLE Ismertetés
schema_name varchar(64) NEM A séma neve
query_id bigint(20) NEM Az adott lekérdezéshez létrehozott egyedi azonosító, ha ugyanaz a lekérdezés más sémában fut, a rendszer új azonosítót hoz létre
timestamp_id timestamp NEM A lekérdezés végrehajtásának időbélyege. Ez a query_store_interval konfiguráción alapul
query_digest_text hosszú szöveg NEM A normalizált lekérdezés szövege az összes literál eltávolítása után
query_sample_text hosszú szöveg NEM A tényleges lekérdezés első megjelenése literálokkal
query_digest_truncated Kicsit IGEN A lekérdezés szövegének csonkolt-e. Az érték Igen lesz, ha a lekérdezés hosszabb, mint 1 KB
execution_count bigint(20) NEM A lekérdezés végrehajtásának száma ehhez az időbélyeg-azonosítóhoz / a konfigurált időközi időszak alatt
warning_count bigint(20) NEM A belső lekérdezés során generált figyelmeztetések száma
error_count bigint(20) NEM A lekérdezés által az intervallum során generált hibák száma
sum_timer_wait double IGEN A lekérdezés teljes végrehajtási ideje ezredmásodpercben
avg_timer_wait double IGEN A lekérdezés átlagos végrehajtási ideje ezredmásodpercben
min_timer_wait double IGEN A lekérdezés minimális végrehajtási ideje ezredmásodpercben
max_timer_wait double IGEN Maximális végrehajtási idő ezredmásodpercben
sum_lock_time bigint(20) NEM A lekérdezés végrehajtásához szükséges összes zárolásra fordított idő teljes időtartama ebben az időablakban
sum_rows_affected bigint(20) NEM Érintett sorok száma
sum_rows_sent bigint(20) NEM Az ügyfélnek küldött sorok száma
sum_rows_examined bigint(20) NEM A vizsgált sorok száma
sum_select_full_join bigint(20) NEM Teljes illesztések száma
sum_select_scan bigint(20) NEM A kiválasztási vizsgálatok száma
sum_sort_rows bigint(20) NEM Sorok száma rendezve
sum_no_index_used bigint(20) NEM Azon esetek száma, amikor a lekérdezés nem használt indexeket
sum_no_good_index_used bigint(20) NEM Azon esetek száma, amikor a lekérdezés-végrehajtási motor nem használt jó indexeket
sum_created_tmp_tables bigint(20) NEM Létrehozott ideiglenes táblák teljes száma
sum_created_tmp_disk_tables bigint(20) NEM Lemezen létrehozott ideiglenes táblák teljes száma (I/O-t generál)
first_seen timestamp NEM A lekérdezés első előfordulása (UTC) az összesítési ablakban
last_seen timestamp NEM A lekérdezés utolsó előfordulása (UTC) az összesítési ablakban

mysql.query_store_wait_stats

Ez a nézet várakozási események adatait adja vissza a Lekérdezéstárban. Minden különálló adatbázis-azonosítóhoz, felhasználói azonosítóhoz, lekérdezésazonosítóhoz és eseményhez egy sor tartozik.

Név Adattípus IS_NULLABLE Ismertetés
interval_start timestamp NEM Az intervallum kezdete (15 perces növekmény)
interval_end timestamp NEM Az intervallum vége (15 perces növekmény)
query_id bigint(20) NEM Generált egyedi azonosító a normalizált lekérdezésen (a lekérdezéstárból)
query_digest_id varchar(32) NEM A normalizált lekérdezés szövege az összes literál eltávolítása után (a lekérdezéstárból)
query_digest_text hosszú szöveg NEM A tényleges lekérdezés első megjelenése literálokkal (a lekérdezéstárból)
event_type varchar(32) NEM A várakozási esemény kategóriája
event_name varchar(128) NEM A várakozási esemény neve
count_star bigint(20) NEM A lekérdezés időköze során mintavételezett várakozási események száma
sum_timer_wait_ms double NEM A lekérdezés teljes várakozási ideje (ezredmásodpercben) az intervallum alatt

Funkciók

Név Ismertetés
mysql.az_purge_querystore_data(TIMESTAMP) Az összes lekérdezéstár adatainak kiürítése a megadott időbélyeg előtt
mysql.az_procedure_purge_querystore_event(TIMESTAMP) Az összes várakozási esemény adatainak kiürítése a megadott időbélyeg előtt
mysql.az_procedure_purge_recommendation(TIMESTAMP) Kiüríti azokat a javaslatokat, amelyek lejárata a megadott időbélyeg előtt van

Korlátozások és ismert problémák

  • Ha egy MySQL-kiszolgáló rendelkezik a paraméterrel read_only , a Lekérdezéstár nem tud adatokat rögzíteni.
  • A Lekérdezéstár funkció megszakadhat, ha hosszú Unicode-lekérdezésekkel (>= 6000 bájt) találkozik.
  • A várakozási statisztikák megőrzési ideje 24 óra.
  • A várakozási statisztikák mintával rögzítik az események töredékét. A gyakoriság a paraméterrel query_store_wait_sampling_frequencymódosítható.

További lépések

  • További információ a lekérdezési teljesítményről Elemzések