Tag: sql

MySQL optimering

Jeg har i mange år leget og forsøgt at optimere min MySQL server og web server, uden rigtigt at forstå hvad alle de indstillingsmuligheder gjorde ved mit setup. Har prøvet et par værktøjer til optimering, som skulle eftersigende hjælpe med indstilling og fin justering. Men det var ikke lige til for meget hjælp. Det har hjulpet på nogle område, men det har resulteret i at min MySQL server krævede for meget RAM.

Min server har kun 512Mb RAM, og det kan være mine fin justeringer har gjort det at MySQL processer var blevet optimeret på nogle områder, men RAM forbrug var steget for meget, så der blev swappet til disken.

Men for et par uger, fandt jeg frem til MySQL Performance Tuning Primer Script som har på en mere menneskelig vis vist data og anbefalinger, for hvad der skal foretages og fin justeres. Og det kan mærkes nu. Så hvis du sidder og skal optimere din MySQL server, så er det måske det her du skal prøve.

 

Bash function og automatisering

Da ja tester og udvikler diverse applikation i PHP og MySQL, på min hjemme maskine, havde jeg brug for at kunne hurtigt starte/stoppe for web-/mysql-server. Da jeg er Mac bruger, og kan godt lide selv at kompilere MySQL, PHP og min web server, var det lidt svært at finde widgets som tillod mig at starte diverse tjenester ved enkelt tryk.

Mac OS X kommer med Apache, og den kan nemt startes/slukkes i Sharing indstillinger. Men da jeg bruger LiteSpeed web server, skulle jeg skrive kommandoen i terminalen for at gøre det samme. Det samme er med MySQL, der findes en indstilling widget der tillader dette, men kun hvis man installere deres egen binær version af MySQL server.

Disse kommandoer var ikke indviklede, men der var svære at huske og skrive hele tiden. Så jeg oprettede nogle alias’er som skulle hjælpe mig med det, og dermed også gøre kommandoer lidt kortere.

alias litespeed='sudo /opt/lsws/bin/lswsctrl $1'
alias sqlsrv='sudo /usr/local/mysql/share/mysql/mysql.server $1'

Det fungerede også i et styk tid, indtil jeg blev træt af at tænde dem enkeltvis. Så jeg kiggede efter hvordan man kunne lave en funktion som gjorde flere ting. Og sjovt nok, bash shell (fil ~/.bash_profile) tillader brugeren at oprette funktioner.

Så nu har jeg én kommando til at starte alle de relevante processer som jeg skal bruge når jeg tester og udvikler.

Nu skal jeg kun skrive dev start, for at starte web/mysql server. jeg kan også bruge stop for at stoppe dem, eller restart til at genstarte dem.

dev()
{
sudo echo $1"ing Dev Environment"
sudo /opt/lsws/bin/lswsctrl $1
sudo /usr/local/mysql/share/mysql/mysql.server $1
echo "Environment" $1"ed"
}

Jeg elsker simpelthen UNIX miljø, den tillader mig at opstille og indstille ting som jeg gerne vil have dem.