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
- Jelentkezzen be az Azure Portalra, és válassza ki az Azure Database for MySQL-kiszolgálót.
- Válassza a Kiszolgálóparaméterek lehetőséget a menü Gépház szakaszában.
- Keresse meg a query_store_capture_mode paramétert.
- Á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:
- Keresse meg a query_store_wait_sampling_capture_mode paramétert.
- Á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_frequency
módosítható.
További lépések
- További információ a lekérdezési teljesítményről Elemzések