Dzienniki wolnych zapytań w usłudze Azure Database for MySQL — serwer elastyczny
DOTYCZY: Azure Database for MySQL — serwer elastyczny
Na serwerze elastycznym usługi Azure Database for MySQL dziennik wolnych zapytań jest dostępny dla użytkowników w celu skonfigurowania i uzyskania dostępu. Dzienniki wolnych zapytań są domyślnie wyłączone i można je włączyć, aby ułatwić identyfikowanie wąskich gardeł wydajności podczas rozwiązywania problemów.
Aby uzyskać więcej informacji na temat dziennika wolnych zapytań MySQL, zobacz sekcję dzienników wolnych zapytań w dokumentacji aparatu MySQL.
Konfigurowanie rejestrowania wolnych zapytań
Domyślnie dziennik wolnych zapytań jest wyłączony. Aby włączyć dzienniki, ustaw slow_query_log
parametr serwera na WŁ. Można to skonfigurować przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.
Inne parametry, które można dostosować do kontrolowania zachowania rejestrowania wolnych zapytań, obejmują:
- long_query_time: zarejestruj zapytanie, jeśli ukończenie zapytania trwa dłużej niż
long_query_time
(w sekundach). Wartość domyślna to 10 sekund. Parametrlong_query_time
serwera jest stosowany globalnie do wszystkich nowo ustanowionych połączeń w programie MySQL. Nie ma to jednak wpływu na wątki, które są już połączone. Zaleca się ponowne nawiązanie połączenia z usługą Azure Database for MySQL — serwer elastyczny z aplikacji lub ponowne uruchomienie serwera pomoże wyczyścić wątki ze starszymi wartościami "long_query_time" i zastosować zaktualizowaną wartość parametru. - log_slow_admin_statements: określa, czy instrukcje administracyjne (np.
ALTER_TABLE
,ANALYZE_TABLE
) są rejestrowane. - log_queries_not_using_indexes: określa, czy zapytania, które nie używają indeksów, są rejestrowane.
- log_throttle_queries_not_using_indexes: ogranicza liczbę nieindeksowanych zapytań, które mogą być zapisywane w dzienniku wolnych zapytań. Ten parametr ma wpływ, gdy
log_queries_not_using_indexes
jest ustawiony na WARTOŚĆ WŁĄCZONE
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 MySQL, ponieważ wszystkie zapytania uruchomione względem tych nieindeksowanych tabel zostaną zapisane w dzienniku wolnych zapytań.
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ń
Dzienniki wolnych zapytań są zintegrowane z ustawieniami diagnostycznymi usługi Azure Monitor. Po włączeniu dzienników wolnych zapytań w wystąpieniu serwera elastycznego usługi Azure Database for 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 ustawień diagnostycznych, zobacz dokumentację dzienników diagnostycznych. Aby dowiedzieć się więcej na temat włączania ustawień diagnostycznych w witrynie Azure Portal, zobacz artykuł dotyczący portalu dzienników wolnych zapytań.
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 dane wyjściowe dziennika wolnych zapytań. 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_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_text_s
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 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
Wyświetlanie listy 5 najdłuższych zapytań na określonym serwerze
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
Podsumowywanie wolnych zapytań według minimalnej, maksymalnej, średniej i czasu zapytania odchylenia standardowego na określonym serwerze
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
Wykres dystrybucji wolnych zapytań na określonym serwerze
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
Wyświetlanie zapytań dłuższych niż 10 sekund we wszystkich wystąpieniach serwera elastycznego usługi Azure Database for MySQL z włączonymi dziennikami diagnostycznymi
AzureDiagnostics | where Category == 'MySqlSlowLogs' | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s | where query_time_d > 10
Następne kroki
- Dowiedz się więcej o dziennikach inspekcji
- Szczegółowe informacje o wydajności zapytań