Pytanie Pomiar rzeczywistego czasu zapytania MySQL


Jak mogę zmierzyć czas wykonania zapytania bez mierzenia czasu, który spędza na oczekiwaniu na wydanie blokady itp.? Moim jedynym pomysłem było ciągłe mierzenie tego samego zapytania i rejestrowanie najszybszego czasu.


60
2018-06-30 14:32


pochodzenie




Odpowiedzi:


Uruchom profiler za pomocą

SET profiling = 1;

Następnie wykonaj zapytanie.

Z

SHOW PROFILES;

zobaczysz listę zapytań, dla których profiler ma statystyki. I na koniec wybierasz, z którym zapytaniem chcesz się zapoznać

SHOW PROFILE FOR QUERY 1;

lub jakakolwiek liczba twoich zapytań.

Otrzymasz listę, na której dokładnie spędziłeś czas w zapytaniu.

Więcej informacji w podręcznik.


116
2018-06-30 15:00



To jest doskonałe! Czy wiesz, czy to jest wolne? Czy mogę dodać to do mojej klasy opakowania, aby wykonać dla każdego zapytania uruchomionego na mojej stronie? - Mikhail
Nigdy o tym nie myślałem. Dlaczego chcesz to zrobić? Zwykle jest to po prostu dla rozwoju. Jeśli chcesz dowiedzieć się, które zapytania są wolne, zajrzyj do dziennika powolnego zapytania. dev.mysql.com/doc/refman/5.1/en/slow-query-log.html - fancyPants
Ponieważ zapytania mają różny czas dla różnych użytkowników. slow-query-log wydaje się liczyć czas oczekiwania na wydanie blokady - Mikhail
Nie do końca prawda. Oczekiwanie na blokadę to także symtom dla kolejnego zapytania, które jest wolne. Sugeruję, wybierz zapytania w swoim wolnym dzienniku zapytań, uruchom je za pomocą profilera, aby zobaczyć, gdzie spędzają tyle czasu. Następnie, jeśli to możliwe, popraw je. Dodaj odpowiednio indeksy, przepisz je lub zmniejsz odczytane dane, jeśli zapytanie spędza dużo czasu sending data. Lub cokolwiek potrzeba, aby poprawić wydajność. Nie widzę sensu w informowaniu użytkowników, dlaczego muszą tak długo czekać. W rzeczywistości ich to nie obchodzi. - fancyPants
Nie chciałem wyświetlać użytkownikom wyników profilowania. Chciałem go uchwycić na żywo i przechowywać dla własnych celów - Mikhail


Odpowiedź staje się nieważna ...

SHOW PROFILE[S] są przestarzałe od wersji MySQL 5.6.7 i zostaną usunięte w przyszłej wersji MySQL. Zamiast tego użyj schematu wydajności; widzieć http://dev.mysql.com/doc/refman/5.6/en/performance-schema-query-profiling.html


29
2017-09-18 03:26



Jeśli profil daje ci coś bardziej użytecznego niż "wysyłanie danych", wygrywasz na loterii. - Rick James
Używam 5.7.19 i nadal show profiles działa poprawnie - Siva Praveen
@SivaPraveen - OK, na razie nadal działa, ale "... zostanie usunięty ..." - Rick James