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 |
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 |
Łą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 |
Adres URI zasobu |
Uwaga
W przypadku sql_text
programu 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