Protokoly pomalých dotazů na flexibilním serveru Azure Database for MySQL

PLATÍ PRO: Flexibilní server Azure Database for MySQL

Na flexibilním serveru Azure Database for MySQL je protokol pomalých dotazů dostupný uživatelům, kteří můžou konfigurovat a přistupovat k němu. Protokoly pomalých dotazů jsou ve výchozím nastavení zakázané a dají se povolit, aby vám pomohly s identifikací kritických bodů výkonu během řešení potíží.

Další informace o protokolu pomalých dotazů MySQL najdete v části protokol pomalých dotazů v dokumentaci k modulu MySQL.

Konfigurace protokolování pomalých dotazů

Ve výchozím nastavení je protokol pomalých dotazů zakázaný. Pokud chcete povolit protokoly, nastavte slow_query_log parametr serveru na ZAPNUTO. Můžete ho nakonfigurovat pomocí webu Azure Portal nebo Azure CLI.

Mezi další parametry, které můžete upravit pro řízení chování protokolování pomalých dotazů, patří:

  • long_query_time: Zapište dotaz, pokud dokončení trvá déle než long_query_time (v sekundách). Výchozí hodnota je 10 sekund. Parametr long_query_time serveru se globálně vztahuje na všechna nově vytvořená připojení v MySQL. Nemá ale vliv na vlákna, která jsou již připojena. Doporučujeme se z aplikace znovu připojit k flexibilnímu serveru Azure Database for MySQL nebo restartovat server pomůže vymazat vlákna se staršími hodnotami long_query_time a použít aktualizovanou hodnotu parametru.
  • log_slow_admin_statements: určuje, zda jsou zaznamenány správní prohlášení (napřALTER_TABLE. , ANALYZE_TABLE).
  • log_queries_not_using_indexes: Určuje, jestli jsou zaprotokolovány dotazy, které nepoužívají indexy.
  • log_throttle_queries_not_using_indexes: Omezuje počet neindexovaných dotazů, které je možné zapsat do protokolu pomalých dotazů. Tento parametr se projeví, když log_queries_not_using_indexes je nastavený na ZAPNUTO.

Důležité

Pokud vaše tabulky nejsou indexované, nastavení log_queries_not_using_indexes parametrů na log_throttle_queries_not_using_indexes hodnotu ON může ovlivnit výkon MySQL, protože všechny dotazy spuštěné s těmito neindexovanými tabulkami se zapíšou do protokolu pomalých dotazů.

Úplný popis parametrů protokolu pomalých dotazů najdete v dokumentaci k protokolu pomalých dotazů MySQL.

Přístup k protokolům pomalých dotazů

Protokoly pomalých dotazů jsou integrované s nastavením diagnostiky služby Azure Monitor. Jakmile povolíte protokoly pomalých dotazů na instanci flexibilního serveru Azure Database for MySQL, můžete je generovat do protokolů služby Azure Monitor, služby Event Hubs nebo Azure Storage. Další informace o nastavení diagnostiky najdete v dokumentaci k diagnostickým protokolům. Další informace o povolení nastavení diagnostiky na webu Azure Portal najdete v článku o portálu protokolu pomalých dotazů.

Poznámka:

Účty Premium Storage se nepodporují, pokud odesíláte protokoly do úložiště Azure prostřednictvím diagnostiky a nastavení.

Následující tabulka popisuje výstup protokolu pomalých dotazů. 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_s 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_sbude 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 Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_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 Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_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 Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_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 Resource 
    
  • Graf pomalé distribuce dotazů na konkrétním serveru

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count() by Resource , bin(TimeGenerated, 5m)
    | render timechart
    
  • Zobrazení dotazů delších než 10 sekund ve všech instancích flexibilního serveru Azure Database for MySQL s povolenými diagnostickými protokoly

    AzureDiagnostics
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10
    

Další kroky