Optimering af MySQL server

Jeg har ind i mellem brug for at få lidt mere fart på en MySQL server. Generelt er mange ting man kan gøre for at optimere hastigheden på sine data. Men generet kan man sige at man kan forsøge at optimere serveren og/eller sin SQL i koden.

For at optimere MySQL serveren benytter jeg et lille PERL script kaldet mysqltuner, som kan downloades her.

Kør mysqltuner på selve MySQL serveren, blot kør scriptet og den vil spørge om bruger og kode.
Når den har kørt vil der komme noget output med forslag til hvad du kan forbere. De forslag kan du så benytte i din my.cf (MySQL config) og genstarte MySQL serveren.

Lad derefter serveren stå og køre i nogle timer eller mere, alt efter load, og kør sctiptet igen. Så vil du kunne se om det har haft den ønskede virkning eller om der er andre ting som du kan ændre på MySQL’s opsætning.

I MySQL’s config kan du også slå log_slow_queries til ved at fjerne udkommentering eller tilføje følgende hvis det ikke er der i forvejen:

# Here you can see queries with especially long duration
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 1
log-queries-not-using-indexes

Jeg vælger altid at sætte log_query_time = 1 som betyder at queryes der tager mere end 1 sekund skal logges ind. Samtidig slår jeg log-queries-not-using-indexes til som gør at de queryes som ikke har de rigtige indexes også kommer i loggen.

Når du har lagt det ind og genstartet serveren vil du kunne undersøge loggen for at se hvor der mangler indexes på tabeller og du kan også se om der er nogle queryes fra din applikation som tager mere end 1 sekund at udføre.

Så kan du kigge koden igennem for din appikation for at se om det ikke kan optimeres på en eller anden måde.

 

Leave a comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.