MySQL en MariaDB database performance tips

Bij performance problemen van een database applicatie is het altijd verstandig eerst naar de opzet te kijken en welke queries er worden uitgevoerd. Het is verstandig stap voor stap door de functionaliteit te lopen en te bekijk wat de knelpunten zijn,


Bij het uitvoeren van queries is de eerste stap altijd om te kijken of:

JOIN's moeten eigenlijk altijd plaats vinden op (big)int-kolommen met een INDEX. Koppelen op tekstvelden vertraagd queries in de regel behoorlijk.

Als de query uitgebreid is, helpt het vaak ook om JOIN's te vermijden op 'key-value' tabellen en deze apart op te halen en in de programmeercode te koppelen. Key-value tabellen zijn bijvoorbeeld status-teksten, waarbij in een tbl_persoon-tabel een status_id bevat en de tbl_status_texts-tabel de tekst bij de ID's.

Naast het optimaliseren van de queries is ook mogelijk te kijken naar de serverinstellingen. Standaard wordt in MySQL en MariaDB gebruik gemaakt van de zogeheten 'InnoDB'-engine. Deze heeft een variabele innodb_buffer_pool_size. Idealiter is de buffer de grootte van de database + 10% ivm overhead. Uiteraard moet dit niet een hogere waarde hebben dan het interne geheugen van de server. Onder Windows kan dit een behoorlijke performance boost geven, omdat het filesystem daar een stuk trager is dan onder Linux.

Mocht je bulk INSERT's of UPDATE's uitvoeren is het verstandig met transacties te werken. Een query is in MySQL/MariaDB standaard een transactie. Omdat transacties automatisch naar de hardeschijf worden geflushed is de harddisk op dat moment de bottleneck. Als voor een BULK update een transactie wordt gestart en op het eind - of op bepaalde intervallen - wordt gecommit, kan dit een proces behoorlijk versnellen. In de praktijk ging doorlooptijden van scripts van 66-seconden terug naar 20-seconden.


- Bent u opzoek naar een Php of Java programmeur voor uw website of applicatie? (freelance / detachering)
- Losse tickets, opdrachten, of gehele projecten in de planning?
- Systeembeheer van Linux of Windows Server ?

Dan kom ik graag met u in contact! Meer informatie over mij vindt u hier.
Sitemap | Op alle producten & diensten zijn de algemene voorwaarden van toepassing