2009-06-18 21 views
25

Jak profilować bazę danych MySQL. Chcę zobaczyć wszystkie SQL są uruchamiane przeciwko bazy danych.Jak profilować MySQL

Wiem, że można to zrobić:

  • set profiling=1;
  • Uruchom powolne kwerendy (np SELECT * FROM messages WHERE fromaddress='xxx';
  • SHOW PROFILES;

Ale to wydaje się tylko stosuje się do rzeczy uruchomić na komendzie wierszu, chcę zobaczyć wyniki z działania strony internetowej:

+1

Oczywiście nic nie stoi na przeszkodzie, aby uruchomić te zapytania w witrynie internetowej. Domyślam się, że pytasz o metodę, która nie implikuje modyfikacji kodu aplikacji. –

+0

["POKAŻ PROFILI" jest przestarzałe i zostanie usunięte w przyszłej wersji. Zamiast tego należy użyć schematu wydajności. "] (Http://dev.mysql.com/doc/refman/5.7/en/show-profiles.html) – bishop

Odpowiedz

6

Chcesz query log - ale oczywiście robienie tego na ciężkim serwerze produkcyjnym może być ... nierozsądne.

1

Możesz po prostu przeanalizować dziennik zapytań w czasie rzeczywistym. Jeśli w systemie Linux, można użyć tail -f, aby zobaczyć dziennik żywo

Ponadto, można spróbować trochę wolnego oprogramowania z tymi facetami:

http://hackmysql.com/mysqlsla

0

MySqlAdministrator posiada kilka przydatnych funkcji (build w tym dzienniki), ale za to dzienniki muszą być uruchamiane na tym samym komputerze jako bazy

3

który pracował dla mnie na Ubuntu.

Znajdź i otwórz plik konfiguracyjny MySQL, zwykle /etc/mysql/my.cnf w systemie Ubuntu. Spójrz na odcinku, który mówi „Rejestrowanie i replikacja”

# * Logging and Replication 
# Both location gets rotated by the cronjob. 
# Be aware that this log type is a performance killer. 

log = /var/log/mysql/mysql.log 

lub w nowszych wersjach MySQL, skomentować tę linie kodów

general_log_file  = /var/log/mysql/mysql.log 
general_log    = 1 
log_error    = /var/log/mysql/error.log 

Wystarczy odkomentować zmienną log aby włączyć rejestrowanie. Zrestartować MySQL z tym poleceniem:

sudo /etc/init.d/mysql restart 

Teraz jesteśmy gotowi, aby rozpocząć monitorowanie zapytań wejdą one w Otwórz nowy terminal i uruchomić to polecenie, aby przewinąć plik dziennika, dostosowując ścieżkę, jeśli to konieczne..

tail -f /var/log/mysql/mysql.log 
Powiązane problemy