Monitorowanie zapytań w MySQL

Stanąłem przed problemem wyłapania nieoptymalnego zapytania w moim systemie. Ponieważ system gada z bazą niezwykle intensywnie, log zapytań urósł mi w ciągu kilku minut do wielkości trudnej do ogarnięcia. I jak tu znaleźć trefne zapytanie?

Wszystkie polecenia należy wykonywać z poziomu bazy danych. Najlepiej zacząć od otwarcia terminala, a w terminalu podać:

mysql -h localhost -u <nazwa użytkownika> -p<hasło>

pomiędzy -p a hasłem nie może być spacji!!!

pliki z logami zakładane są domyślnie na tym samym katalogu, na którym są pliki bazy danych. W Linuxie jest to zwykle katalog:

/var/lib/mysql

1. Włączenie logu zdarzeń w bazie

SET GLOBAL general_log = 'ON';

plik logu ma nazwę: <nazwa serwera>.log

2. Włączenie długich zapytań

Ustawienie pliku logu. Można podać pełną ścieżkę ale również tylko samą nazwę pliku:

set global slow_query_log_file = 'path';

Ustawienie czasu, od którego uważamy zapytanie jako długie (w sekundach)

set global long_query_time = 1;

włączenie logowania

SET GLOBAL slow_query_log = 'ON';

3. Włączenie logowania zapytań nieużywających indeksów

set global log_queries_not_using_indexes = 'ON';

I działa!! Mamy zapytania jak na widelcu 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.