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

Ważne

Usługa Azure Database for MariaDB znajduje się na ścieżce wycofania. Zdecydowanie zalecamy przeprowadzenie migracji do usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MariaDB?.

W usłudze Azure Database for MariaDB 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ń, zobacz dokumentację bazy danych MariaDB dotyczącą dziennika wolnych zapytań.

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 log_queries_not_using_indexes parametrów i log_throttle_queries_not_using_indexes na wartość ON może mieć wpływ na wydajność bazy danych MariaDB, ponieważ wszystkie zapytania uruchomione względem tych nieindeksowanych tabel zostaną zapisane 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 MariaDB.

Zobacz dokumentację dziennika wolnych zapytań MariaDB, 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 MariaDB: 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 i uzyskiwanie dostępu do dzienników serwera 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 MariaDB jest zintegrowana z dziennikami diagnostycznymi usługi Azure Monitor. Po włączeniu dzienników wolnych zapytań na serwerze MariaDB 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.

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.DBFORMARIADB
ResourceType Servers
ResourceId Adres 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 Całkowity czas wykonywania zapytania
lock_time_s Całkowity czas blokowania zapytania
user_host_s Username
rows_sent_s 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 Adres 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, event_class_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, event_class_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, 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 LogicalServerName_s
    
  • Wykres dystrybucji wolnych zapytań na określonym serwerze

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, event_class_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 MariaDB z włączonymi dziennikami diagnostycznymi

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

Następne kroki