Optymalizacja MySQL

by on Lip.22, 2011, under Hosting

Ostatnim czasem postawiłem sobie serwer MySQL. Niestety po instalacji byłem niemile zaskoczony, ponieważ apache i mysql wysycał mi 200 MB RAM. Apache był już skonfigurowany w miarę optymalnie do moich potrzeb, więc postanowiłem pogrzebać w konfiguracji serwera.

Konfigurację serwera wykonamy poprzez plik w lokalizacji /etc/mysql/my.cnf – oczywiście możemy wyedytować go, czym chcemy – vim, nano, mcedit.

Dobrą praktyką jest wycięcie tego, czego nie potrzebujemy :) Jeśli nie korzystanie z mechanizmu innodb to wystarczy odkomentować lub dodać linię skip-innodb.

Kolejno sugeruję włączyć logowanie „wolnych” zapytań poprzez podanie takich linii:

log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

Pomoże nam to przede wszystkim w optymalizacji naszych tabel oraz zapytań do bazy danych.

Proponuje też spojrzeć na parametr max_connections – w moim przypadku konfigurowany serwer jest środowiskiem testowym, więc ustawiłem ilość połączeń na 10.

Bardzo dobrym pomocnikiem jest mysqltuner, który jest napisany w Perlu. Wystarczy pobrać go wgetem na nasz serwer, lecz proszę pamiętajcie o tym, aby skrypt był wykonywalny. Innymi słowy należy wydać polecenie chmod +x mysqltuner.pl

Aby uruchomić skrypt wystarczy wpisać ./mysqltuner.pl – narzędzie to wyrzuci nam komunikaty w języku angielskim, co należałoby zmienić w confie. W moim wypadku dostałem sugestie, aby zmienić wartość parametru query_cache_limit

Po wprowadzeniu zmian nie zapomnijcie o restarcie usługi – przypomnę wykonamy to poleceniem

/etc/init.d/mysql restart

Po tych modyfikacjach Apache i MySQL u mnie pożera już tylko 65 MB RAM. Tak naprawdę nie ma złotej rady na optymalizację MySQLa – wszystko zależy jaką aplikację chcemy hostować na swoim środowiku, jakie usługi mamy już odpalone no i przede wszystkim trzeba śledzić logi MySQL oraz z rozsądkiem stosować się do rad mysqltunera.


Comments are closed.

Wyszukiwarka