W analizie logów wolnych zapytań kluczowe kroki to włączenie logowania, identyfikacja najdłuższych zapytań, analiza planów wykonania, wprowadzenie optymalizacji i stały monitoring efektów.
Co to jest Slow Query Log i dlaczego warto go analizować
- Slow Query Log to zapis zapytań przekraczających ustalony próg czasu wykonania.
- Analiza pomaga wskazać wąskie gardła wydajności i priorytetyzować optymalizacje.
- W efekcie poprawia się czas odpowiedzi aplikacji i ogólna skalowalność bazy danych.
Włączanie i konfiguracja Slow Query Log
- Znajdź plik konfiguracyjny serwera bazodanowego (np. my.cnf / my.ini).
- Włącz logowanie wolnych zapytań: ustaw slow_query_log = 1.
- Ustaw próg czasu: long_query_time = X (np. 0.5).
- Opcjonalnie włącz log_queries_not_using_indexes = 1, aby wyłapywać zapytania bez użycia indeksów.
- Restartuj serwer, aby zastosować zmiany.
- Sprawdź, czy plik z logami jest tworzony i zapisywany.
Jak interpretować wpisy Slow Query Log
- Query_time – całkowity czas wykonania zapytania.
- Lock_time – czas blokowania zasobów (jeśli występuje).
- Rows_sent i Rows_examined – ile wierszy zwrócono i ile zostało przejrzanych.
- Usunięcie niepotrzebnych kolumn – zapytania często zawierają SELECT *; ograniczenie selekcji do potrzebnych kolumn ma duży wpływ.
- Porównuj wpisy pod kątem powtórzeń i kontekstu operacyjnego (np. raporty, raporty dzienne).
Narzędzia do analizy Slow Query Log
- mysqldumpslow – podsumowanie logów wolnych zapytań i wyciągnięcie najwolniejszych zapytań.
- pt-query-digest (Percona Toolkit) – zaawansowana analiza i statystyki trendów.
- Inne narzędzia do analizy plików logów oraz moduły w interfejsach IDE/bazodanowych narzędziach.
Praktyczny proces analizy krok po kroku
- Zidentyfikuj top zapytania pod względem Query_time i powtarzalności.
- Wygeneruj plan wykonania dla podejrzanych zapytań (EXPLAIN / EXPLAIN ANALYZE).
- Sprawdź strukturę indeksów na kolumnach używanych w where/join.
- Oceń możliwość optymalizacji zapytania lub jego podziału na mniejsze operacje.
- Wprowadź optymalizacje w stagingu i przetestuj wpływ na wydajność.
- Wdróż zmiany w produkcji po potwierdzeniu korzyści.
- Kontynuuj monitorowanie, aby wychwycić nowe powolne zapytania.
Najczęstsze błędy i pułapki do unikania
- Poleganie na pojedynczym najwolniejszym zapytaniu bez uwzględnienia częstotliwości.
- Brak analizy planów zapytań – bez EXPLAIN trudno wskazać źródło problemu.
- Nadmierne optymalizacje bez testów – może pogorszyć inne aspekty wydajności.
- Ignorowanie wpływu konfiguracji serwera (np. bufory, cache) na wyniki.
Najlepsze praktyki utrzymania logów i monitoringu
- Ustal harmonogram rotacji logów i archiwizacji danych.
- Wprowadzaj okresowe przeglądy logów (np. co tydzień, co miesiąc).
- Łącz analizę z metrykami systemowymi (CPU, IO, pamięć).
- Testuj zmiany na środowisku staging przed produkcją.
Przykładowe przypadki optymalizacji
- Dodanie indeksu na kolumnie używanej w warunku WHERE lub JOIN.
- Przebudowa zapytania w celu ograniczenia skanów tabeli.
- Wykluczenie niepotrzebnych kolumn z SELECTa i ograniczenie liczby zwracanych wierszy.
- Rozdzielenie dużych zapytań na mniejsze części lub użycie cache’owanych wyników.
Często Zadawane Pytania
Co to jest log wolnych zapytań (Slow Query Log)?
Dziennik zawierający zapytania, które przekraczają zadany czas wykonania i mogą wskazywać na wąskie gardła wydajności.
Jak włączyć Slow Query Log w MySQL/MariaDB?
Włącz logowanie w konfiguracji serwera poprzez ustawienie slow_query_log=1 i long_query_time (np. 0.5 s), opcjonalnie log_queries_not_using_indexes=1, a następnie zrestartuj serwer.
Które zapytania najczęściej pojawiają się w logu?
Najczęściej długie zapytania, często bez optymalnych indeksów lub z nieefektywnymi planami wykonania.
Jak analizować wpisy logów wolnych zapytań?
Sprawdź czas wykonania (Query_time), częstość występowania, użyte indeksy oraz plan zapytania; porównuj z optymalnym planem.
Jakie narzędzia pomagają w analizie Slow Query Log?
Mysqldumpslow, pt-query-digest (Percona Toolkit), narzędzia do analizy plików logów oraz wizualizacyjne opcje w MySQL Workbench.
Jak poprawić powolne zapytania?
Dodaj lub dostosuj indeksy, przeformułuj zapytanie, ogranicz liczbę zwracanych wierszy, unikaj leading wildcards w LIKE oraz zbadaj możliwość podziału zapytania.
Najczęstsze błędy podczas analizy logów?
Ignorowanie częstotliwości zapytań, skupianie się wyłącznie na najdłuższym zapytaniu, brak testów na stagingu i zbyt pochopne optymalizacje bez porównań planów.
Jak monitorować efektywność po optymalizacjach?
Porównuj metryki czasu odpowiedzi, liczbę powtarzających się wolnych zapytań, wykorzystanie CPU, IO i czas renderowania indeksów; utrzymuj porządek logów.