Monitorování výkonu služby Azure Database for MySQL pomocí úložiště dotazů
PLATÍ PRO: Jednoúčelový server Azure Database for MySQL
Důležité
Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?
Platí pro: Azure Database for MySQL 5.7, 8.0
Funkce Úložiště dotazů ve službě Azure Database for MySQL poskytuje způsob, jak sledovat výkon dotazů v průběhu času. Úložiště dotazů zjednodušuje řešení potíží s výkonem tím, že vám pomůže rychle najít nejdéle běžící a nejvýkonnější dotazy náročné na prostředky. Úložiště dotazů automaticky zaznamenává historii dotazů a statistik modulu runtime a uchovává je pro vaši kontrolu. Odděluje data časovými intervaly, abyste viděli vzory využití databáze. Data pro všechny uživatele, databáze a dotazy se ukládají v databázi schématu mysql v instanci Azure Database for MySQL.
Běžné scénáře použití úložiště dotazů
Úložiště dotazů je možné použít v řadě scénářů, včetně následujících:
- Zjišťování dotazů s nižším přenosem dat
- Určení počtu spuštění dotazu v daném časovém intervalu
- Porovnání průměrné doby provádění dotazu v časových oknech a zobrazení velkých rozdílů
Povolení úložiště dotazů
Úložiště dotazů je funkce výslovného souhlasu, takže na serveru není ve výchozím nastavení aktivní. Úložiště dotazů je povolené nebo zakázané globálně pro všechny databáze na daném serveru a není možné ho zapnout nebo vypnout pro každou databázi.
Povolení úložiště dotazů pomocí webu Azure Portal
- Přihlaste se k webu Azure Portal a vyberte server Azure Database for MySQL.
- V Nastavení části nabídky vyberte Parametry serveru.
- Vyhledejte parametr query_store_capture_mode.
- Nastavte hodnotu NA ALL a Uložit.
Povolení statistik čekání v úložišti dotazů:
- Vyhledejte parametr query_store_wait_sampling_capture_mode.
- Nastavte hodnotu NA ALL a Uložit.
Počkejte až 20 minut, než se první dávka dat bude uchovávat v databázi mysql.
Informace v úložišti dotazů
Úložiště dotazů má dvě úložiště:
- Úložiště statistik modulu runtime pro zachování informací o statistikách provádění dotazu.
- Úložiště statistik čekání pro zachování informací o statistikách čekání.
Aby se minimalizovalo využití místa, statistiky spouštění modulu runtime v úložišti statistik modulu runtime se agregují v pevném konfigurovatelném časovém intervalu. Informace v těchto úložištích jsou viditelné dotazováním zobrazení úložiště dotazů.
Následující dotaz vrátí informace o dotazech v úložišti dotazů:
SELECT * FROM mysql.query_store;
Nebo tento dotaz na statistiku čekání:
SELECT * FROM mysql.query_store_wait_stats;
Hledání dotazů čekání
Poznámka:
Statistiky čekání by neměly být povoleny během špičky nebo je u citlivých úloh po neomezenou dobu zapnuté.
U úloh, které běží s vysokým využitím procesoru nebo na serverech nakonfigurovaných s nižšími virtuálními jádry, při povolování statistik čekání buďte opatrní. Neměl by být zapnutý na neomezenou dobu.
Typy událostí čekání kombinují různé události čekání do kontejnerů podle podobnosti. Úložiště dotazů poskytuje typ události čekání, konkrétní název události čekání a dotaz, který se týká. Schopnost korelovat tyto informace o čekání se statistikami modulu runtime dotazu znamená, že získáte hlubší přehled o tom, co přispívá k charakteristikám výkonu dotazů.
Tady je několik příkladů, jak můžete získat další přehled o úlohách pomocí statistik čekání v úložišti dotazů:
Pozorování | Akce |
---|---|
Vysoké čekání zámků | Zkontrolujte texty dotazů pro ovlivněné dotazy a identifikujte cílové entity. Vyhledejte v úložišti dotazů další dotazy, které upravují stejnou entitu, která se provádí často nebo mají vysokou dobu trvání. Po identifikaci těchto dotazů zvažte změnu logiky aplikace, aby se zlepšila souběžnost, nebo použijte méně omezující úroveň izolace. |
Čekání vstupně-výstupních operací s vysokou vyrovnávací pamětí | Vyhledejte dotazy s velkým počtem fyzických čtení v úložišti dotazů. Pokud odpovídají dotazům s vysokými vstupně-výstupními čekáními, zvažte zavedení indexu u podkladové entity, aby se místo prohledávání hledaly. Tím se minimalizují režijní náklady na vstupně-výstupní operace dotazů. Zkontrolujte doporučení k výkonu serveru na portálu a zjistěte, jestli pro tento server existují doporučení indexu, která by optimalizovala dotazy. |
Čekání s vysokým využitím paměti | Vyhledejte dotazy s nejvyšším využitím paměti v úložišti dotazů. Tyto dotazy pravděpodobně zpozdí další průběh ovlivněných dotazů. Zkontrolujte doporučení k výkonu pro váš server na portálu a zjistěte, jestli existují doporučení indexu, která by tyto dotazy optimalizovala. |
Možnosti konfigurace
Když je úložiště dotazů povolené, ukládá data v 15minutových oknech agregace až 500 jedinečných dotazů na okno.
Pro konfiguraci parametrů úložiště dotazů jsou k dispozici následující možnosti.
Parametr | Popis | Výchozí | Rozsah |
---|---|---|---|
query_store_capture_mode | Na základě hodnoty zapněte nebo vypněte funkci úložiště dotazů. Poznámka: Pokud je performance_schema vypnuto, zapnutí query_store_capture_mode zapne performance_schema a podmnožinu nástrojů schématu výkonu vyžadovaných pro tuto funkci. | ALL | NONE, ALL |
query_store_capture_interval | Interval zachytávání úložiště dotazů v minutách. Umožňuje zadat interval, ve kterém se agregují metriky dotazů. | 15 | 5 - 60 |
query_store_capture_utility_queries | Zapnutím nebo vypnutím zachytíte všechny dotazy nástroje, které se v systému spouští. | NE | ANO, NE |
query_store_retention_period_in_days | Časové intervaly ve dnech pro uchovávání dat v úložišti dotazů. | 7 | 1 - 30 |
Následující možnosti se vztahují konkrétně na statistiky čekání.
Parametr | Popis | Výchozí | Rozsah |
---|---|---|---|
query_store_wait_sampling_capture_mode | Umožňuje zapnout nebo vypnout statistiky čekání. | ŽÁDNÝ | NONE, ALL |
query_store_wait_sampling_frequency | Mění frekvenci vzorkování čekání v sekundách. 5 až 300 sekund. | 30 | 5-300 |
Poznámka:
V současné době query_store_capture_mode nahrazuje tuto konfiguraci, což znamená , že query_store_capture_mode i query_store_wait_sampling_capture_mode musí být povoleny všem, aby statistiky čekání fungovaly. Pokud je query_store_capture_mode vypnutá, statistiky čekání se vypnou i od doby, kdy statistika čekání využívá povolené performance_schema a query_text zachycené úložištěm dotazů.
K získání nebo nastavení jiné hodnoty parametru použijte Azure Portal nebo Azure CLI .
Zobrazení a funkce
K zobrazení a správě úložiště dotazů použijte následující zobrazení a funkce. Tato zobrazení můžou zobrazit v úložišti dotazů kdokoli z veřejné role s vybranými oprávněními . Tato zobrazení jsou k dispozici pouze v databázi mysql .
Dotazy jsou normalizovány zobrazením jejich struktury po odebrání literálů a konstant. Pokud jsou dva dotazy s výjimkou hodnot literálů stejné, budou mít stejnou hodnotu hash.
mysql.query_store
Toto zobrazení vrátí všechna data v úložišti dotazů. Pro každé jedinečné ID databáze, ID uživatele a ID dotazu je jeden řádek.
Název | Datový typ | IS_NULLABLE | Popis |
---|---|---|---|
schema_name |
varchar(64) | NE | Název schématu |
query_id |
bigint(20) | NE | Jedinečné ID vygenerované pro konkrétní dotaz, pokud se stejný dotaz spustí v jiném schématu, vygeneruje se nové ID. |
timestamp_id |
časové razítko | NE | Časové razítko, ve kterém se dotaz spouští. Vychází z konfigurace query_store_interval. |
query_digest_text |
longtext | NE | Normalizovaný text dotazu po odebrání všech literálů |
query_sample_text |
longtext | NE | První vzhled skutečného dotazu s literály |
query_digest_truncated |
bitové | ANO | Zda byl text dotazu zkrácen. Hodnota bude Ano, pokud je dotaz delší než 1 kB. |
execution_count |
bigint(20) | NE | Počet spuštění dotazu pro toto ID časového razítka / během nakonfigurovaného intervalu |
warning_count |
bigint(20) | NE | Počet upozornění, která tento dotaz vygeneroval během interního |
error_count |
bigint(20) | NE | Počet chyb, které tento dotaz vygeneroval během intervalu |
sum_timer_wait |
double | ANO | Celková doba provádění tohoto dotazu během intervalu v milisekundách |
avg_timer_wait |
double | ANO | Průměrná doba provádění tohoto dotazu během intervalu v milisekundách |
min_timer_wait |
double | ANO | Minimální doba provádění tohoto dotazu v milisekundách |
max_timer_wait |
double | ANO | Maximální doba provádění v milisekundách |
sum_lock_time |
bigint(20) | NE | Celková doba strávená pro všechny zámky provádění tohoto dotazu během tohoto časového intervalu |
sum_rows_affected |
bigint(20) | NE | Počet ovlivněných řádků |
sum_rows_sent |
bigint(20) | NE | Počet řádků odeslaných klientovi |
sum_rows_examined |
bigint(20) | NE | Počet vyšetřených řádků |
sum_select_full_join |
bigint(20) | NE | Počet úplných spojení |
sum_select_scan |
bigint(20) | NE | Počet vybraných kontrol |
sum_sort_rows |
bigint(20) | NE | Počet seřazených řádků |
sum_no_index_used |
bigint(20) | NE | Kolikrát dotaz nepoužil žádné indexy |
sum_no_good_index_used |
bigint(20) | NE | Počet, kdy prováděcí modul dotazů nepoužil žádné dobré indexy |
sum_created_tmp_tables |
bigint(20) | NE | Celkový počet vytvořených dočasných tabulek |
sum_created_tmp_disk_tables |
bigint(20) | NE | Celkový počet dočasných tabulek vytvořených na disku (generuje vstupně-výstupní operace) |
first_seen |
časové razítko | NE | První výskyt dotazu (UTC) během okna agregace |
last_seen |
časové razítko | NE | Poslední výskyt dotazu během tohoto okna agregace |
mysql.query_store_wait_stats
Toto zobrazení vrátí data událostí čekání v úložišti dotazů. Pro každé jedinečné ID databáze, ID uživatele, ID dotazu a událost existuje jeden řádek.
Název | Datový typ | IS_NULLABLE | Popis |
---|---|---|---|
interval_start |
časové razítko | NE | Začátek intervalu (15minutový přírůstek) |
interval_end |
časové razítko | NE | Konec intervalu (15minutový přírůstek) |
query_id |
bigint(20) | NE | Vygenerované jedinečné ID normalizovaného dotazu (z úložiště dotazů) |
query_digest_id |
varchar(32) | NE | Normalizovaný text dotazu po odebrání všech literálů (z úložiště dotazů) |
query_digest_text |
longtext | NE | První vzhled skutečného dotazu s literály (z úložiště dotazů) |
event_type |
varchar(32) | NE | Kategorie události čekání |
event_name |
varchar(128) | NE | Název události čekání |
count_star |
bigint(20) | NE | Počet událostí čekání vzorkovaných během intervalu dotazu |
sum_timer_wait_ms |
double | NE | Celková doba čekání (v milisekundách) tohoto dotazu během intervalu |
Funkce
Název | Popis |
---|---|
mysql.az_purge_querystore_data(TIMESTAMP) |
Vyprázdní všechna data úložiště dotazů před daným časovým razítkem. |
mysql.az_procedure_purge_querystore_event(TIMESTAMP) |
Vyprázdní všechna data události čekání před daným časovým razítkem. |
mysql.az_procedure_purge_recommendation(TIMESTAMP) |
Vyprázdnění doporučení, jejichž vypršení platnosti předchází danému časovému razítku |
Omezení a známé problémy
- Pokud má server MySQL parametr
read_only
zapnutý, úložiště dotazů nemůže zachytit data. - Funkce úložiště dotazů může být přerušena, pokud narazí na dlouhé dotazy Unicode (>= 6 000 bajtů).
- Doba uchovávání statistik čekání je 24 hodin.
- Statistika čekání používá ukázku k zachycení zlomku událostí. Frekvenci lze upravit pomocí parametru
query_store_wait_sampling_frequency
.
Další kroky
- Další informace o Přehledy výkonu dotazů