Protokoly pomalých dotazů ve službě Azure Database for MySQL
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?
Ve službě Azure Database for MySQL je protokol pomalých dotazů dostupný uživatelům. Přístup k transakčnímu protokolu není podporován. Protokol pomalých dotazů se dá použít k identifikaci kritických bodů výkonu při řešení potíží.
Další informace o protokolu pomalých dotazů MySQL najdete v referenční příručce k protokolu pomalých dotazů MySQL.
Když je na vašem serveru povolené úložiště dotazů, můžou se dotazy jako "CALL mysql.az_procedure_collect_wait_stats (900, 30);
" protokolovat v protokolech pomalých dotazů. Toto chování se očekává, protože funkce úložiště dotazů shromažďuje statistiky o dotazech.
Konfigurace protokolování pomalých dotazů
Ve výchozím nastavení je protokol pomalých dotazů zakázaný. Pokud ho chcete povolit, nastavte slow_query_log
na zapnuto. To je možné povolit pomocí webu Azure Portal nebo Azure CLI.
Mezi další parametry, které můžete upravit, patří:
- long_query_time: Pokud dotaz trvá déle než long_query_time (v sekundách), zaprotokoluje se tento dotaz. Výchozí hodnota je 10 sekund.
- log_slow_admin_statements: Pokud ON obsahuje administrativní prohlášení, jako jsou ALTER_TABLE a ANALYZE_TABLE v prohlášeních napsaných do slow_query_log.
- log_queries_not_using_indexes: Určuje, jestli jsou dotazy, které nepoužívají indexy, protokolovány do slow_query_log
- log_throttle_queries_not_using_indexes: Tento parametr omezuje počet neindexovaných dotazů, které je možné zapsat do protokolu pomalých dotazů. Tento parametr se projeví, když je log_queries_not_using_indexes nastavena na ZAPNUTO.
- log_output: Pokud soubor umožňuje zápis protokolu pomalých dotazů do místního úložiště serveru i do diagnostických protokolů služby Azure Monitor. Pokud ho nastavíte na hodnotu None (Žádné), protokoly pomalých dotazů se budou zapisovat pouze do diagnostických protokolů služby Azure Monitor.
Důležité
Pokud vaše tabulky nejsou indexované, nastavení parametrů log_queries_not_using_indexes
a log_throttle_queries_not_using_indexes
na hodnotu ON (Zapnuto) může mít vliv na výkon MySQL, protože všechny dotazy spuštěné pro tyto neindexované tabulky se budou zapisovat do protokolu pomalých dotazů.
Pokud plánujete protokolování pomalých dotazů po delší dobu, doporučujeme nastavit log_output
hodnotu Žádné. Pokud je tato možnost nastavená na Soubor, zapisují se tyto protokoly do místního úložiště serveru a můžou ovlivnit výkon MySQL.
Úplný popis parametrů protokolu pomalých dotazů najdete v dokumentaci k protokolu pomalých dotazů MySQL.
Přístup k protokolům pomalých dotazů
Pro přístup k protokolům pomalých dotazů ve službě Azure Database for MySQL existují dvě možnosti: úložiště místního serveru nebo diagnostické protokoly služby Azure Monitor. Toto nastavení je nastaveno pomocí parametru log_output
.
V případě místního úložiště serveru můžete protokoly pomalých dotazů vypsat a stáhnout pomocí webu Azure Portal nebo Azure CLI. Na webu Azure Portal přejděte ke svému serveru. V části Monitorování vyberte stránku Protokoly serveru. Další informace o Azure CLI najdete v tématu Konfigurace protokolů pomalých dotazů a přístup k nim pomocí Azure CLI.
Diagnostické protokoly služby Azure Monitor umožňují přeskakovat protokoly pomalých dotazů do protokolů služby Azure Monitor (Log Analytics), Azure Storage nebo Event Hubs. Další informace najdete níže .
Uchovávání protokolů úložiště místního serveru
Při přihlašování k místnímu úložišti serveru jsou protokoly k dispozici až sedm dnů od jejich vytvoření. Pokud celková velikost dostupných protokolů přesahuje 7 GB, nejstarší soubory se odstraní, dokud nebude k dispozici místo. Limit úložiště 7 GB pro protokoly serveru je k dispozici zdarma a není možné ho rozšířit.
Protokoly se obměňují každých 24 hodin nebo 7 GB podle toho, co nastane dříve.
Poznámka:
Výše uvedené uchovávání protokolů se nevztahuje na protokoly, které se předávají pomocí diagnostických protokolů služby Azure Monitor. Dobu uchovávání datových jímek, které se generují, můžete změnit na (např. Azure Storage).
Diagnostické protokoly
Služba Azure Database for MySQL je integrovaná s diagnostickými protokoly služby Azure Monitor. Jakmile na serveru MySQL povolíte protokoly pomalých dotazů, můžete je nechat vysílat do protokolů služby Azure Monitor, služby Event Hubs nebo Azure Storage. Další informace o povolení diagnostických protokolů najdete v části Věnované diagnostickým protokolům.
Poznámka:
Účty Premium Storage se nepodporují, pokud odesíláte protokoly do služby Azure Storage prostřednictvím diagnostiky a nastavení.
Následující tabulka popisuje, co je v jednotlivých protokolech. V závislosti na výstupní metodě se pole zahrnutá a pořadí, ve kterém se zobrazují, se mohou lišit.
Vlastnost | Popis |
---|---|
TenantId |
ID vašeho tenanta |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Časové razítko, kdy se protokol zaznamenal v UTC |
Type |
Typ protokolu Vždy AzureDiagnostics |
SubscriptionId |
IDENTIFIKÁTOR GUID předplatného, ke kterému server patří |
ResourceGroup |
Název skupiny prostředků, do které server patří |
ResourceProvider |
Název poskytovatele prostředků Vždy MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Adresa URI zdroje |
Resource |
Název serveru |
Category |
MySqlSlowLogs |
OperationName |
LogEvent |
Logical_server_name_s |
Název serveru |
start_time_t [UTC] |
Čas zahájení dotazu |
query_time_s |
Celková doba v sekundách, po které trvalo provedení dotazu |
lock_time_s |
Celkový čas v sekundách, kdy byl dotaz uzamčen |
user_host_s |
Username |
rows_sent_d |
Počet odeslaných řádků |
rows_examined_s |
Počet vyšetřených řádků |
last_insert_id_s |
last_insert_id |
insert_id_s |
Vložit ID |
sql_text_s |
Úplný dotaz |
server_id_s |
ID serveru |
thread_id_s |
ID vlákna |
\_ResourceId |
Adresa URI zdroje |
Poznámka:
Protokol sql_text
bude zkrácen, pokud přesahuje 2048 znaků.
Analýza protokolů v protokolech služby Azure Monitor
Jakmile se protokoly pomalých dotazů předávají do protokolů služby Azure Monitor prostřednictvím diagnostických protokolů, můžete provést další analýzu pomalých dotazů. Níže najdete několik ukázkových dotazů, které vám pomůžou začít. Nezapomeňte aktualizovat následující název serveru.
Dotazy delší než 10 sekund na konkrétním serveru
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | where query_time_d > 10
Seznam 5 nejdelších dotazů na konkrétním serveru
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | order by query_time_d desc | take 5
Shrnutí pomalých dotazů podle minimálního, maximálního, průměrného a směrodatné odchylky doby dotazu na konkrétním serveru
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by LogicalServerName_s
Graf pomalé distribuce dotazů na konkrétním serveru
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m) | render timechart
Zobrazení dotazů delších než 10 sekund na všech serverech MySQL s povolenými diagnostickými protokoly
AzureDiagnostics | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | where query_time_d > 10