Snelle optimalisaties voor MySQL

Armijn Hemel, 2 augustus 2009, 5385 views.

Als data weggegooid wordt uit een MySQL database wordt er vaak (afhankelijk van de gebruikte storage engine) nog een beetje ruimte in beslag genomen. Deze ruimte wordt bij het optimaliseren van de database weer vrijgegeven. Met een simpel script kan je dit door cron laten doen.

Tags: ,

Als je een MySQL database beheert en er wel eens data uit hebt weggehaald dan ben je ongetwijfeld wel eens tegen 'overhead' aangelopen. Overhead is de ruimte waar de data bewaard werd, maar die nog niet is vrijgegeven of is hergebruikt. Als je de database optimaliseert wordt deze data weer vrijgegeven, wat weer diskruimte en geheugen scheelt. Met een paar kleine databases zal je dit niet echt merken, maar met veel databases, of een paar grote databases kan het flink aantikken.

Met het mysqlcheck commando kan je databases makkelijker optimaliseren. Met een simpel script automatiseer je dit voor alle databases op je systeem:

#!/bin/sh
DATABASES=`mysql --defaults-file=/home/mysql/.my.cnf -B -e "show databases" | \
     grep -v Database | grep -v information_schema`
for DB in $DATABASES; do
        mysqlcheck --defaults-file=/home/mysql/.my.cnf -o $DB | \ 
        grep -v "already up to date" | grep -v "OK" | \
        grep -v "The storage engine for the table doesn't support optimize"
done

Het script vraagt eerst aan de MySQL server welke databases er zijn en optimaliseert ze vervolgens, ongeacht of er wel overhead is of niet en of de storage engine optimalisatie ondersteunt. Draai dit scriptje vanuit cron (wij draaien het één keer per week) en problemen met gigantische hoeveelheden overhead zouden zich niet meer voor moeten doen.

Creative Commons License Op dit werk is een Creative Commons Licentie van toepassing.
Social networking: Tweet dit artikel op Twitter Geef dit artikel door op LinkedIn Bookmark dit artikel op Google Bookmark dit artikel op Yahoo! Bookmark dit artikel op Technorati Bookmark dit artikel op Delicious Deel dit artikel op Facebook Digg dit artikel op Digg Zend dit artikel naar to Reddit Geef dit artikel een duim omhoog op StumbleUpon Zend dit artikel naar Furl

Talkback

reageer op dit artikel