Monitorowanie wydajności usługi Azure Database for MariaDB za pomocą magazynu zapytań
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?.
Dotyczy: Azure Database for MariaDB 10.2
Funkcja magazynu zapytań w usłudze Azure Database for Mariadb umożliwia śledzenie wydajności zapytań w czasie. Magazyn zapytań upraszcza rozwiązywanie problemów z wydajnością, ułatwiając szybkie znajdowanie najdłużej działających i najbardziej intensywnie korzystających z zasobów zapytań. Magazyn zapytań automatycznie przechwytuje historię zapytań i statystyk środowiska uruchomieniowego i zachowuje je do przeglądu. Oddziela dane według okien czasowych, aby można było zobaczyć wzorce użycia bazy danych. Dane dla wszystkich użytkowników, baz danych i zapytań są przechowywane w bazie danych schematu mysql w wystąpieniu usługi Azure Database for MariaDB.
Typowe scenariusze korzystania z magazynu zapytań
Magazyn zapytań może być używany w wielu scenariuszach, w tym w następujących scenariuszach:
- Wykrywanie zapytań, których regresja
- Określanie liczby wykonań zapytania w danym przedziale czasu
- Porównanie średniego czasu wykonywania zapytania w oknach czasu w celu wyświetlenia dużych różnic
Włączanie magazynu zapytań
Magazyn zapytań jest funkcją zgody, więc nie jest domyślnie aktywna na serwerze. Magazyn zapytań jest włączony lub wyłączony globalnie dla wszystkich baz danych na danym serwerze i nie można go włączyć ani wyłączyć dla każdej bazy danych.
Włączanie magazynu zapytań przy użyciu witryny Azure Portal
- Zaloguj się do witryny Azure Portal i wybierz serwer usługi Azure Database for MariaDB.
- Wybierz pozycję Parametry serwera w sekcji Ustawienia menu.
- Wyszukaj parametr query_store_capture_mode.
- Ustaw wartość na ALL (WSZYSTKIE) i Save (Zapisz).
Aby włączyć statystyki oczekiwania w magazynie zapytań:
- Wyszukaj parametr query_store_wait_sampling_capture_mode.
- Ustaw wartość na ALL (WSZYSTKIE) i Save (Zapisz).
Poczekaj do 20 minut, aż pierwsza partia danych będzie utrwalana w bazie danych mysql.
Informacje w magazynie zapytań
Magazyn zapytań ma dwa magazyny:
- Statystyka środowiska uruchomieniowego przechowuje informacje o statystykach wykonywania zapytań.
- Magazyn statystyk oczekiwania na utrwalanie informacji statystycznych dotyczących oczekiwania.
Aby zminimalizować użycie miejsca, statystyki wykonywania środowiska uruchomieniowego w magazynie statystyk środowiska uruchomieniowego są agregowane w stałym, konfigurowalnym przedziale czasu. Informacje w tych magazynach są widoczne przez wykonywanie zapytań względem widoków magazynu zapytań.
Następujące zapytanie zwraca informacje o zapytaniach w magazynie zapytań:
SELECT * FROM mysql.query_store;
Lub to zapytanie dotyczące statystyk oczekiwania:
SELECT * FROM mysql.query_store_wait_stats;
Znajdowanie zapytań oczekiwania
Uwaga
Statystyki oczekiwania nie powinny być włączone w godzinach szczytu obciążenia lub być włączone przez czas nieokreślony dla wrażliwych obciążeń.
W przypadku obciążeń z wysokim użyciem procesora CPU lub na serwerach skonfigurowanych z niższymi rdzeniami wirtualnymi należy zachować ostrożność podczas włączania statystyk oczekiwania. Nie należy włączać go na czas nieokreślony.
Typy zdarzeń oczekiwania łączą różne zdarzenia oczekiwania w zasobniki według podobieństwa. Magazyn zapytań udostępnia typ zdarzenia oczekiwania, konkretną nazwę zdarzenia oczekiwania i pytanie. Możliwość skorelowania tych informacji oczekiwania ze statystykami środowiska uruchomieniowego zapytania oznacza, że możesz lepiej zrozumieć, co przyczynia się do charakterystyki wydajności zapytań.
Poniżej przedstawiono kilka przykładów sposobu uzyskiwania większego wglądu w obciążenie przy użyciu statystyk oczekiwania w magazynie zapytań:
Obserwacji | Akcja |
---|---|
Oczekiwanie na wysoką blokadę | Sprawdź teksty zapytań pod kątem zapytań, których dotyczy problem, i zidentyfikuj jednostki docelowe. Poszukaj w magazynie zapytań pod kątem innych zapytań modyfikujących tę samą jednostkę, która jest wykonywana często i/lub ma wysoki czas trwania. Po zidentyfikowaniu tych zapytań rozważ zmianę logiki aplikacji w celu poprawy współbieżności lub użyj mniej restrykcyjnego poziomu izolacji. |
Wysokie oczekiwania we/wy buforu | Znajdź zapytania z dużą liczbą operacji odczytu fizycznego w magazynie zapytań. Jeśli pasują one do zapytań z dużymi oczekiwaniami we/wy, rozważ wprowadzenie indeksu do bazowej jednostki, aby wykonać wyszukiwanie zamiast skanowania. Zminimalizowałoby to obciążenie operacji we/wy zapytań. Sprawdź Rekomendacje wydajności serwera w portalu, aby sprawdzić, czy istnieją zalecenia dotyczące indeksu dla tego serwera, które zoptymalizują zapytania. |
Oczekiwanie na wysoką ilość pamięci | Znajdź zapytania zużywające najwięcej pamięci w magazynie zapytań. Te zapytania prawdopodobnie opóźniają dalszy postęp zapytań, których dotyczy problem. Sprawdź Rekomendacje wydajności serwera w portalu, aby sprawdzić, czy istnieją zalecenia dotyczące indeksów, które zoptymalizują te zapytania. |
Opcje konfiguracji
Gdy magazyn zapytań jest włączony, zapisuje dane w 15-minutowych oknach agregacji, maksymalnie 500 odrębnych zapytań na okno.
Dostępne są następujące opcje konfigurowania parametrów magazynu zapytań.
Parametr | Opis | Wartość domyślna | Zakres |
---|---|---|---|
query_store_capture_mode | Włącz/WYŁĄCZ funkcję magazynu zapytań na podstawie wartości. Uwaga: jeśli performance_schema jest wyłączona, włączenie query_store_capture_mode spowoduje włączenie performance_schema i podzbioru instrumentów schematu wydajności wymaganych dla tej funkcji. | ALL | BRAK, WSZYSTKIE |
query_store_capture_interval | Interwał przechwytywania magazynu zapytań w minutach. Umożliwia określenie interwału, w którym metryki zapytania są agregowane | 15 | 5 - 60 |
query_store_capture_utility_queries | Włączenie lub wyłączenie w celu przechwycenia wszystkich zapytań narzędzi wykonywanych w systemie. | NIE | TAK, NIE |
query_store_retention_period_in_days | Przedział czasu w dniach przechowywania danych w magazynie zapytań. | 7 | 1 - 30 |
Poniższe opcje mają zastosowanie specjalnie do statystyk oczekiwania.
Parametr | Opis | Wartość domyślna | Zakres |
---|---|---|---|
query_store_wait_sampling_capture_mode | Umożliwia włączenie/wyłączenie statystyk oczekiwania. | BRAK | BRAK, WSZYSTKIE |
query_store_wait_sampling_frequency | Zmienia częstotliwość próbkowania oczekiwania w sekundach. Od 5 do 300 sekund. | 30 | 5-300 |
Uwaga
Obecnie query_store_capture_mode zastępuje tę konfigurację, co oznacza, że zarówno query_store_capture_mode , jak i query_store_wait_sampling_capture_mode muszą być włączone do wszystkich, aby statystyki oczekiwania działały. Jeśli query_store_capture_mode jest wyłączona, statystyki oczekiwania są wyłączone, ponieważ statystyki oczekiwania wykorzystują performance_schema włączone, a query_text przechwycone przez magazyn zapytań.
Użyj witryny Azure Portal , aby uzyskać lub ustawić inną wartość parametru.
Widoki i funkcje
Wyświetlanie magazynu zapytań i zarządzanie nim przy użyciu następujących widoków i funkcji. Każda osoba w wybranej roli publicznej uprawnień może użyć tych widoków, aby wyświetlić dane w magazynie zapytań. Te widoki są dostępne tylko w bazie danych mysql .
Zapytania są znormalizowane przez przyjrzenie się ich strukturze po usunięciu literałów i stałych. Jeśli dwa zapytania są identyczne z wyjątkiem wartości literału, będą miały ten sam skrót.
mysql.query_store
Ten widok zwraca wszystkie dane w magazynie zapytań. Istnieje jeden wiersz dla każdego unikatowego identyfikatora bazy danych, identyfikatora użytkownika i identyfikatora zapytania.
Nazwa/nazwisko | Typ danych | IS_NULLABLE | Opis |
---|---|---|---|
schema_name |
varchar(64) | NIE | Nazwa schematu |
query_id |
bigint(20) | NIE | Unikatowy identyfikator wygenerowany dla określonego zapytania, jeśli to samo zapytanie jest wykonywane w innym schemacie, zostanie wygenerowany nowy identyfikator |
timestamp_id |
timestamp | NIE | Sygnatura czasowa, w której jest wykonywane zapytanie. Jest to oparte na konfiguracji query_store_interval |
query_digest_text |
Longtext | NIE | Znormalizowany tekst zapytania po usunięciu wszystkich literałów |
query_sample_text |
Longtext | NIE | Pierwszy wygląd rzeczywistego zapytania z literałami |
query_digest_truncated |
bitowe | TAK | Czy tekst zapytania został obcięty. Wartość będzie mieć wartość Tak, jeśli zapytanie jest dłuższe niż 1 KB |
execution_count |
bigint(20) | NIE | Liczba wykonanych zapytań dla tego identyfikatora sygnatury czasowej / w skonfigurowanym okresie interwału |
warning_count |
bigint(20) | NIE | Liczba ostrzeżeń wygenerowanych przez to zapytanie podczas wewnętrznego |
error_count |
bigint(20) | NIE | Liczba błędów generowanych przez to zapytanie w interwale |
sum_timer_wait |
double | TAK | Całkowity czas wykonywania tego zapytania w interwale |
avg_timer_wait |
double | TAK | Średni czas wykonywania dla tego zapytania w interwale |
min_timer_wait |
double | TAK | Minimalny czas wykonywania dla tego zapytania |
max_timer_wait |
double | TAK | Maksymalny czas wykonywania |
sum_lock_time |
bigint(20) | NIE | Łączna ilość czasu spędzonego dla wszystkich blokad dla tego wykonania zapytania w tym przedziale czasu |
sum_rows_affected |
bigint(20) | NIE | Liczba wierszy, których dotyczy problem |
sum_rows_sent |
bigint(20) | NIE | Liczba wierszy wysłanych do klienta |
sum_rows_examined |
bigint(20) | NIE | Liczba zbadanych wierszy |
sum_select_full_join |
bigint(20) | NIE | Liczba pełnych sprzężeń |
sum_select_scan |
bigint(20) | NIE | Liczba wybranych skanowań |
sum_sort_rows |
bigint(20) | NIE | Liczba wierszy posortowanych |
sum_no_index_used |
bigint(20) | NIE | Liczba przypadków, gdy zapytanie nie używało żadnych indeksów |
sum_no_good_index_used |
bigint(20) | NIE | Liczba przypadków, gdy aparat wykonywania zapytań nie używał żadnych dobrych indeksów |
sum_created_tmp_tables |
bigint(20) | NIE | Łączna liczba utworzonych tabel tymczasowych |
sum_created_tmp_disk_tables |
bigint(20) | NIE | Łączna liczba tabel tymczasowych utworzonych na dysku (generuje operacje we/wy) |
first_seen |
timestamp | NIE | Pierwsze wystąpienie (UTC) zapytania w oknie agregacji |
last_seen |
timestamp | NIE | Ostatnie wystąpienie (UTC) zapytania w tym oknie agregacji |
mysql.query_store_wait_stats
Ten widok zwraca dane zdarzeń oczekiwania w magazynie zapytań. Istnieje jeden wiersz dla każdego unikatowego identyfikatora bazy danych, identyfikatora użytkownika, identyfikatora zapytania i zdarzenia.
Nazwa/nazwisko | Typ danych | IS_NULLABLE | Opis |
---|---|---|---|
interval_start |
timestamp | NIE | Początek interwału (przyrost 15 minut) |
interval_end |
timestamp | NIE | Koniec interwału (15-minutowy przyrost) |
query_id |
bigint(20) | NIE | Wygenerowany unikatowy identyfikator znormalizowanego zapytania (z magazynu zapytań) |
query_digest_id |
varchar(32) | NIE | Znormalizowany tekst zapytania po usunięciu wszystkich literałów (z magazynu zapytań) |
query_digest_text |
Longtext | NIE | Pierwszy wygląd rzeczywistego zapytania z literałami (z magazynu zapytań) |
event_type |
varchar(32) | NIE | Kategoria zdarzenia oczekiwania |
event_name |
varchar(128) | NIE | Nazwa zdarzenia oczekiwania |
count_star |
bigint(20) | NIE | Liczba zdarzeń oczekiwania próbkowanych w interwale zapytania |
sum_timer_wait_ms |
double | NIE | Łączny czas oczekiwania (w milisekundach) tego zapytania w interwale |
Funkcje
Nazwa/nazwisko | Opis |
---|---|
mysql.az_purge_querystore_data(TIMESTAMP) |
Przeczyszcza wszystkie dane magazynu zapytań przed danym sygnaturą czasową |
mysql.az_procedure_purge_querystore_event(TIMESTAMP) |
Przeczyszcza wszystkie dane zdarzeń oczekiwania przed daną sygnaturą czasową |
mysql.az_procedure_purge_recommendation(TIMESTAMP) |
Czyści zalecenia, których wygaśnięcie jest przed daną sygnaturą czasową |
Ograniczenia i znane problemy
- Jeśli serwer MariaDB ma parametr
default_transaction_read_only
włączony, magazyn zapytań nie może przechwytywać danych. - Funkcjonalność magazynu zapytań może zostać przerwana, jeśli napotka długie zapytania Unicode (>= 6000 bajtów).
- Okres przechowywania statystyk oczekiwania wynosi 24 godziny.
- Statystyki oczekiwania używają próbki ti przechwytywać ułamek zdarzeń. Częstotliwość można modyfikować przy użyciu parametru
query_store_wait_sampling_frequency
. - Magazyn zapytań nie jest obsługiwany w wersji 10.3.
Następne kroki
- Dowiedz się więcej o Szczegółowe informacje wydajności zapytań
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla