Maak Magento sneller met MySQL query caching

Een van de betere manieren om je webshop sneller te maken is om query caching aan te zetten in je database. Op deze manier worden de meest gebruikte SQL queries bewaard in virtueel geheugen voor vrijwel directe toegang, wanneer er een pagina wordt opgevraagd dat exact dezelfde request maakt.

De reden dat dit zo’n krachtige manier is hoofdzakelijk dat je geen wijzigingen in de codebase van je webshop hoeft te maken, het enige dat je er voor over hoeft te hebben is wat geheugen van je webserver. Dit zal zeer zeker niet al je performance problemen oplossen, maar het kan geen kwaad!

Let op: dit kun je ook toepassen wanneer je geen Magento draait, maar let dan wel op dat wanneer je applicatie vaak tabellen leegmaakt de query cache continue ververst moet worden. Op dit manier zul je er niet heel veel winst uit halen.

Query caching aanzetten wanneer de databaseserver aan staat

Het eerst dat je zult moeten doen is controleren of je MySQL installatie uberhaubt wel query caching ondersteunt. Het gros van de distributies ondersteunen dit, het is echter aangeraden om dit toch even te controleren voordat je instellingen gaat aanpassen.

Om te controleren of je MySQL installatie query caching ondersteunt voer je onderstaand commando uit:

Je krijg een dergelijk scherm als bovenstaande te zien. Vergis je niet, dit betekend niet direct dat query caching aangezet is, hoofdzakelijk omdat de meeste hosting providers dit niet standaard aan zullen zetten. Mijn CentOS installatie heeft deze instelling wel aanstaan, dit komt omdat ik mijn eigen hosting verzorg. Controleer deze instelling dus!

De de volgende stap is om te zien of query caching aanstaat. Je zult meer dan 1 variabele moeten controleren, laten we dit in 1 keer doen door de variabele query% te controleren:

Hieronder zie je wat de meest belangrijke onderdelen betekenen in de bovenstaande lijst:

  • query_cache_size : Dit is de grootte van de cache in bytes. Wanneer je de waarde van deze instelling op het getal 0 zet zul je effectief caching uitzetten.
  • query_cache_type : Deze waarde moet ingesteld staan op ON of het getal 0 om query caching standaard aan te hebben staan.
  • query_cache_limit – Dit is de maximale query grootte (wederom in bytes) dat gecached zal worden.

Wanneer de instelling query_cache_size op 0 staat, of je deze zelf wilt aanpassen zul je onderstaande query uit moeten voeren. Hou er rekening mee dat de waarde in bytes is! Bijvoorbeeld: wanneer je 16 megabyte wil toewijzen aan de cache zul je deze moeten berekenen met : 1024 x 1024 x 16 = 16777216. Stel dan 16777216 in als de waarde voor de instelling query_cache_size.

De overige instellingen zijn op een soortgelijke manier in te stellen:

Hoe kun je er zeker van zijn dat je instellingen werken? Simpel, je kunt hier de query SHOW STATUS voor gebruiken om alle variabelen te laten tonen die beginnen met “Qc”. Laten we een kijkje nemen:

In deze statistieken is te zien dat ik nog voldoende geheugen vrij heb. Wanneer je database server veel “lowmem prunes” toont raad ik je aan om deze waarde te verhogen. Let er wel op om niet TE veel geheugen toe te wijzen voor query caching. Dit kun je zelf het beste bepalen aan de hand van je webserver configuratie, deze verschilt bij vrijwel iedereen. Zorg er in ieder geval voor dat je nog ruim voldoende geheugen overhoud voor PHP, Ruby, Apache, Nginx of wat voor software je ook gebruikt op je webserver.

Query caching aanzetten in MySQL configuratiebestand

Bovenstaande instellingen zijn van toepassing zolang de databaseserver niet herstart. Om de instellingen te bewaren zul je dus een MySQL configuratiebestand moeten aanpassen. Je zult deze instellingen moeten toevoegen aan het /etc/mysq/my.cnf bestand. De exacte locatie van dit bestand kan per webserver verschillen, gebruik onderstaand commando om uit te vinden waar dit bestand staat:

De hash (#) die voor het commando staat moet je niet overnemen. De regel die je direct onder het commando ziet is het resultaat. Open dit bestand in een teksteditor (vim / nano) in sudo of root modus, en voeg onderstaande waardes toe wanneer deze nog niet bestaan. Of pas deze aan wanneer deze al wel beschikbaar zijn, zijn deze instellingen uitgecommentarieerd dan zul je deze moeten aanzetten door de hashes (#) weg te halen voor elke regel. Hieronder zie je een voorbeeld instelling:

Query caching zorgt er merkbaar voor dat je webapplicatie veel sneller uitgevoerd zal worden. Zeker wanneer je applicatie heel veel “reads” uitvoert op de databaseserver. Hou de status in de gaten en begin met ‘tweaken’ van de configuratie instellingen wanneer je dit nodig vind!

Heb jij MySQL performance tips? Laat het ons weten door gebruik te maken van het reactieformulier op deze pagina.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *