Dzienniki wolnych zapytań w usłudze Azure Database for MySQL

DOTYCZY: Azure Database for MySQL — pojedynczy serwer

Ważne

Pojedynczy serwer usługi Azure Database for MySQL znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do serwera elastycznego usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do serwera elastycznego usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MySQL — pojedynczy serwer?

W usłudze Azure Database for MySQL dziennik wolnych zapytań jest dostępny dla użytkowników. Dostęp do dziennika transakcji nie jest obsługiwany. Dziennik wolnych zapytań może służyć do identyfikowania wąskich gardeł wydajności na potrzeby rozwiązywania problemów.

Aby uzyskać więcej informacji na temat dziennika wolnych zapytań MySQL, zobacz sekcję dzienników wolnych zapytań w dokumentacji bazy danych MySQL.

Po włączeniu magazynu zapytań na serwerze mogą zostać wyświetlone zapytania, takie jak "CALL mysql.az_procedure_collect_wait_stats (900, 30);" zarejestrowane w dziennikach wolnych zapytań. To zachowanie jest oczekiwane, ponieważ funkcja Magazynu zapytań zbiera statystyki dotyczące zapytań.

Konfigurowanie rejestrowania wolnych zapytań

Domyślnie dziennik wolnych zapytań jest wyłączony. Aby ją włączyć, ustaw wartość slow_query_log WŁ. Można to włączyć przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Inne parametry, które można dostosować, obejmują:

  • long_query_time: jeśli zapytanie trwa dłużej niż long_query_time (w sekundach), to zapytanie jest rejestrowane. Wartość domyślna to 10 sekund.
  • log_slow_admin_statements: jeśli funkcja ON zawiera instrukcje administracyjne, takie jak ALTER_TABLE i ANALYZE_TABLE w instrukcjach napisanych w slow_query_log.
  • log_queries_not_using_indexes: określa, czy zapytania, które nie używają indeksów, są rejestrowane w slow_query_log
  • log_throttle_queries_not_using_indexes: ten parametr ogranicza liczbę zapytań nieindeksowych, które można zapisywać w dzienniku wolnych zapytań. Ten parametr ma zastosowanie, gdy log_queries_not_using_indexes jest ustawiona na WARTOŚĆ WŁĄCZONE.
  • log_output: jeśli "Plik", umożliwia zapisywanie dziennika wolnych zapytań zarówno w magazynie serwera lokalnego, jak i w dziennikach diagnostycznych usługi Azure Monitor. Jeśli jest to opcja „None”, dziennik wolnych zapytań zostanie zapisany wyłącznie w dziennikach diagnostycznych usługi Azure Monitor.

Ważne

Jeśli tabele nie są indeksowane, ustawienie wartości ON dla parametrów log_queries_not_using_indexes i log_throttle_queries_not_using_indexes może mieć wpływ na wydajność programu MySQL, ponieważ wszystkie uruchomione zapytania dotyczące tych nieindeksowanych tabel będą zapisywane w dzienniku wolnych zapytań.

Jeśli planujesz rejestrowanie wolnych zapytań przez dłuższy czas, zaleca się ustawienie wartości log_output "Brak". Jeśli ustawiono wartość "Plik", te dzienniki są zapisywane w magazynie serwera lokalnego i mogą mieć wpływ na wydajność bazy danych MySQL.

Zapoznaj się z dokumentacją dziennika wolnych zapytań MySQL, aby uzyskać pełne opisy parametrów dziennika wolnych zapytań.

Uzyskiwanie dostępu do dzienników wolnych zapytań

Istnieją dwie opcje uzyskiwania dostępu do dzienników wolnych zapytań w usłudze Azure Database for MySQL: magazyn serwera lokalnego lub dzienniki diagnostyczne usługi Azure Monitor. Jest on ustawiany przy użyciu parametru log_output .

W przypadku magazynu serwera lokalnego można wyświetlić listę dzienników wolnych zapytań i pobrać je przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. W witrynie Azure Portal przejdź do swojego serwera. W nagłówku Monitorowanie wybierz stronę Dzienniki serwera. Aby uzyskać więcej informacji na temat interfejsu wiersza polecenia platformy Azure, zobacz Konfigurowanie dzienników wolnych zapytań i uzyskiwanie do nich dostępu przy użyciu interfejsu wiersza polecenia platformy Azure.

Dzienniki diagnostyczne usługi Azure Monitor umożliwiają przesyłanie dzienników wolnych zapytań do dzienników usługi Azure Monitor (Log Analytics), Azure Storage lub Event Hubs. Aby uzyskać więcej informacji, zobacz poniżej .

Przechowywanie dziennika magazynu serwera lokalnego

Podczas rejestrowania się w magazynie lokalnym serwera dzienniki są dostępne przez maksymalnie siedem dni od ich utworzenia. Jeśli całkowity rozmiar dostępnych dzienników przekracza 7 GB, najstarsze pliki zostaną usunięte do momentu udostępnienia miejsca. Limit magazynowania 7 GB dla dzienników serwera jest dostępny bezpłatnie i nie można go rozszerzyć.

Dzienniki są obracane co 24 godziny lub 7 GB, w zależności od tego, co nastąpi wcześniej.

Uwaga

Powyższe przechowywanie dzienników nie ma zastosowania do dzienników, które są przesyłane potokami przy użyciu dzienników diagnostycznych usługi Azure Monitor. Możesz zmienić okres przechowywania ujścia danych emitowanych do usługi (np. Azure Storage).

Dzienniki diagnostyczne

Usługa Azure Database for MySQL jest zintegrowana z dziennikami diagnostycznymi usługi Azure Monitor. Po włączeniu dzienników wolnych zapytań na serwerze MySQL można je emitować do dzienników usługi Azure Monitor, usługi Event Hubs lub usługi Azure Storage. Aby dowiedzieć się więcej na temat włączania dzienników diagnostycznych, zobacz sekcję dotyczącą sposobu dokumentacji dzienników diagnostycznych.

Uwaga

Konta usługi Premium Storage nie są obsługiwane, jeśli wysyłasz dzienniki do usługi Azure Storage za pośrednictwem diagnostyki i ustawień

W poniższej tabeli opisano, co znajduje się w każdym dzienniku. W zależności od metody wyjściowej uwzględnione pola i kolejność ich wyświetlania mogą się różnić.

Właściwości Opis
TenantId Identyfikator dzierżawy
SourceSystem Azure
TimeGenerated [UTC] Sygnatura czasowa zarejestrowania dziennika w formacie UTC
Type Typ dziennika. Zawsze AzureDiagnostics
SubscriptionId Identyfikator GUID subskrypcji, do którego należy serwer
ResourceGroup Nazwa grupy zasobów, do którego należy serwer
ResourceProvider Nazwa dostawcy zasobów. Zawsze MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Identyfikator URI zasobu
Resource Nazwa serwera
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s Nazwa serwera
start_time_t [UTC] Czas rozpoczęcia zapytania
query_time_s Łączny czas w sekundach wykonywania zapytania
lock_time_s Łączny czas w sekundach, w których zapytanie zostało zablokowane
user_host_s Username
rows_sent_d Liczba wysłanych wierszy
rows_examined_s Liczba zbadanych wierszy
last_insert_id_s last_insert_id
insert_id_s Wstaw identyfikator
sql_text_s Pełne zapytanie
server_id_s Identyfikator serwera
thread_id_s Identyfikator wątku
\_ResourceId Identyfikator URI zasobu

Uwaga

W przypadku sql_textprogramu dziennik zostanie obcięty, jeśli przekroczy 2048 znaków.

Analizowanie dzienników w dziennikach usługi Azure Monitor

Po potoku dzienników wolnych zapytań do dzienników usługi Azure Monitor za pomocą dzienników diagnostycznych można przeprowadzić dalszą analizę wolnych zapytań. Poniżej przedstawiono kilka przykładowych zapytań, które ułatwiają rozpoczęcie pracy. Pamiętaj o zaktualizowaniu poniższej nazwy serwera.

  • Zapytania dłuższe niż 10 sekund na określonym serwerze

    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
    
  • Wyświetlanie listy 5 najdłuższych zapytań na określonym serwerze

    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
    
  • Podsumowywanie wolnych zapytań według minimalnej, maksymalnej, średniej i czasu zapytania odchylenia standardowego na określonym serwerze

    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
    
  • Wykres dystrybucji wolnych zapytań na określonym serwerze

    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
    
  • Wyświetlanie zapytań dłuższych niż 10 sekund na wszystkich serwerach MySQL z włączonymi dziennikami diagnostycznymi

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

Następne kroki