RAM disk gebruiken voor MySQL in Ubuntu 14

  • Berichtcategorie:Blog

Iedereen wil dat zijn website zo snel mogelijk draait. Daarbij horen allerlei tweaks. Een van de belangrijkste snelheidswinsten die er te behalen is valt en staat bij een goede MySQL configuratie. In standaard installaties op Ubuntu 14 wordt er een hele mooie RAM disk aangemaakt van 3.2GB. Maar hoe maak je daar nou gebruik van? En wat is het voordeel als je deze effectief inzet voor MySQL. Ik leg kort uit hoe ik flinke snelheidswinst heb weten te behalen.

Welke queries optimaliseren

Om te controleren welke queries draaien kan je in de Ubuntu shell behoorlijk uit de voeten met onderstaande commando :

watch “mysqladmin -u admin -p’`cat /etc/psa/.psa.shadow`’ processlist”

Wat mij opviel bij een van mijn server configuraties was een wat lange “time” op “Copying to tmp table”. Dit was voor mij de aanleiding om eens naar de RAM disk te gaan kijken en de manier waarop MySQL geconfigureerd was met betrekking tot temporary tables.

Controleren van de RAM Disk

Om te controleren of er een RAM disk is geconfigureerd gebruik je in de shell het commando :

df -h

Als het goed is zie je een tmpfs staan in het lijstje met onder mounted on /run mocht dit niet zo zijn dan zou je deze zelf kunnen aanmaken. Dit ga ik je helaas niet uitleggen. Om te kijken of er ook al een mysqld directory is aangemaakt ga je naar de /run path. Daar zoek je met ls -l of je de mysqld directory kan vinden. Gevonden? Mooi! Dan kan je hem gaan configureren in je MySQL configuratie.

Gebruik van temporary tables in MySQL

Open in het pad etc/mysql de file my.cnf. Als het goed is zie je hier een tmp directory gedefinieerd. Zet een bracket voor (#) om deze originele tmp directory uit te zetten en voeg je nieuwe temp directory toe op je RAM disk :

#tmpdir = /tmp
tmpdir = /run/mysqld

Start vervolgens je MySQL client weer opnieuw op met het commando : service mysql restart

Voila. Je gebruikt nu je RAM disk.

Tweaken van de temporary tables

Zoals aangegeven is de standaard RAM disk zo’n 3.2GB groot. Om gretig gebruik te maken van je nieuwe RAM disk voor temp tables zou je deze wat groter kunnen maken. Ga bijvoorbeeld op 512MB zitten of 1GB, of zelfs 2 GB als je dat wilt. Experimenteer ermee. Je kan dit instellen door (bijvoorbeeld) de volgende configuratie items op te nemen in je MySQL configuratie bestand (my.cnf) :

tmp_table_size = 2048M
max_heap_table_size = 2048M

Succes!