Hoewel alle onderdelen van een WordPress website belangrijk zijn, is je database zonder twijfel een van de belangrijkste. In je database wordt praktisch alle informatie van je site opgeslagen en geraadpleegd. Alleen daarom al moet je WordPress database-optimalisatie perfect zijn.
Een database die lijdt aan een overdaad aan gegevens (bloat) en prestatieproblemen zal je site vertragen en het ophaalproces schaden. Bovendien kun je ook de algehele gebruikerservaring (UX) beïnvloeden. Dit kan op zijn beurt je verkeerscijfers beïnvloeden en doorsijpelen naar je plek in de zoekmachinerankings (naast andere problemen).
In deze tutorial bekijken we WordPress database-optimalisatie vanuit een aantal invalshoeken. We bespreken de algemene structuur, samen met een heleboel optimalisatietechnieken die je kunt gebruiken. We noemen ook meteen de tools en diensten die je kunnen helpen om je databases draaiende te houden.
De basics van de WordPress databasestructuur
Kort gezegd is de WordPress database de ruggengraat van je website. Het bevat vrijwel alles, zoals content, gebruikersgegevens, instellingen en nog veel meer. Bij WordPress zijn de database ’tabellen’ verantwoordelijk voor het opslaan van specifieke soorten informatie.
Het platform gebruikt de MySQL of MariaDB databasebeheersystemen en je hebt er toegang toe met tools zoals phpmyAdmin of Adminer:
De tabel wp_posts
bevat bijvoorbeeld je berichten en pagina’s, terwijl wp_users
gegevens bevat over de gebruikers van je site. We zullen een aantal van deze tabellen wat verderop in meer detail bekijken.
Bij de installatie maakt WordPress een set standaard tabellen aan voor alle typische toepassingen die je nodig hebt. De plugins, thema’s en installaties kunnen echter ook tabellen maken om specifieke en gerelateerde gegevens in op te slaan.
Deze modulaire aanpak is in veel opzichten fantastisch, omdat het uitgebreide functionaliteiten mogelijk maakt. Aan de andere kant kunnen te veel overbodige tabellen (samen met verkeerd beheer) ook leiden tot bloat.
Inzicht in de databasestructuur voor WordPress is om twee redenen cruciaal:
- Prestaties. Met een goede organisatie van de database kun je gegevens sneller ophalen, wat een directe invloed heeft op laadtijden en prestaties.
- Onderhoud. Als je weet welke tabellen corresponderen met de verschillende onderdelen van je site, helpt dat bij het onderhoud. Als een bepaalde plugin bijvoorbeeld problemen veroorzaakt, kun je de bijbehorende tabellen oplossen.
Het regelmatig opschonen en optimaliseren van de tabellen in je database kan voorkomen dat ze groot en onhandelbaar worden. Zoals we weten, kan dit de prestaties op een negatieve manier beïnvloeden.
WordPress-specifieke tabellen
Sites van alle soorten gebruiken databases, niet alleen WordPress. Het platform heeft zijn eigen database tabel typen en rollen, en als je deze wilt optimaliseren, is het belangrijk om ze volledig te begrijpen.
We zullen ze hier niet allemaal behandelen, maar bepaalde tabellen zullen meer aan bod komen dan andere:
wp_options
. Deze tabel slaat je site-instellingen op en is waarschijnlijk een van de meest gebruikte tabellen in je database. Je wilt deze tabel slank houden en goed optimaliseren.wp_postmeta
. Hier staan de metagegevens van je berichten. Naarmate je site groeit, kan dit een van de grootste tabellen in je database worden.wp_users
enwp_usermeta
. Alle informatie over de gebruikers van je site en hun metagegevens staan in deze twee tabellen. In sommige zeldzame gevallen moet je hier inloggen om een wachtwoord te wijzigen als je bent afgesloten van WordPress.
Onthoud dat elke extra plugin of thema die je aan je site toevoegt, deze structuur ook kan veranderen. Het zal echter zelden voorkomen dat een thema of plugin een van deze tabellen verwijdert.
Toch moet je deze mogelijke wijzigingen regelmatig bekijken en begrijpen. Dit is essentieel voor het onderhouden van een geoptimaliseerde database die de prestaties van je site ondersteunt in plaats van belemmert.
Waarom WordPress Database Optimalisatie noodzakelijk is voor de meeste websites
Het optimaliseren van je WordPress database is niet alleen een goede gewoonte; het is een noodzaak voor de meeste sites die een naadloze ervaring willen bieden. Je database is de centrale opslag voor alle belangrijke gegevens van je site. De gezondheid ervan heeft een directe invloed op de prestaties, snelheid en betrouwbaarheid van je site.
Daarom zijn er twee algemene redenen waarom regelmatige WordPress database optimalisatie een belangrijk onderdeel van je workflow zou moeten zijn:
- Verbeterde snelheid en prestaties van je site. Je WordPress database zal na verloop van tijd onnodige of overbodige gegevens bevatten, zoals tijdelijke opties, revisies van berichten, spam reacties of verouderde concepten. Deze opgeblazenheid maakt het langzamer om informatie op te halen.
- Verbeterde gebruikerservaring. Gebruikers verwachten ook een soepele en snelle browse-ervaring. Een goed geoptimaliseerde database betekent dat pagina’s sneller laden en gegevens efficiënter worden verwerkt. Simpel gezegd is elke interactie op een website afhankelijk van database queries. Met een grotere efficiëntie komt een betere UX.
Er zijn ook meer geavanceerde redenen om je database te optimaliseren. Een niet-geoptimaliseerde database legt bijvoorbeeld extra druk op je server omdat die harder moet werken om gegevens te vinden en te leveren. Dit heeft een kritisch effect als je gedeelde hosting met beperkte resources gebruikt. Dit is deels een reden waarom Kinsta helemaal geen gedeelde hosting aanbiedt.
Daarnaast, naarmate je site groeit, groeit je database ook. Hoewel je in het begin misschien een klein, beheersbaar systeem hebt, kan dit snel complexer worden. Met regelmatige optimalisatie kun je ervoor zorgen dat je database de schaalvergroting van je site aankan zonder dat dit ten koste gaat van de prestaties.
Kortom, WordPress database-optimalisatie zal de reactietijden verbeteren. Een laadvertraging van zelfs maar een paar seconden kan leiden tot hogere bouncepercentages en verloren verkeer, wat geen goed nieuws is voor je zoekresultaten.
Regelmatig onderhoud en schoonmaak
Als je regelmatig je WordPress database opschoont en onderhoudt, heb je een van de beste manieren om je site zo soepel mogelijk te laten werken. Databases kunnen na verloop van tijd vollopen met onnodige gegevens, dus een regelmatige en consistente workflow is belangrijk.
Hierbij is belangrijk dat je alle tools en diensten die je tot je beschikking hebt zo optimaal mogelijk benut. Het goede nieuws is dat WordPress een aantal manieren biedt om je database te onderhouden!
Plugins bieden bijvoorbeeld talloze manieren om een database te optimaliseren. WP-Optimize is bijvoorbeeld een populaire oplossing voor deze klus. Er zijn er meer, maar deze heeft goede beoordelingen en recensies op WordPress.org, is gratis en wordt regelmatig bijgewerkt.
We zullen in dit artikel laten zien hoe je je WordPress database kunt optimaliseren met deze plugin, maar je kunt de instructies ook toepassen op de plugin van je keuze. Voor Kinsta klanten: zorg ervoor dat de plugin die je kiest voldoet aan onze eisen en niet voorkomt op onze verboden lijst.
In de volgende paragrafen gaan we hier dieper op in en behandelen we de handmatige aanpak en het gebruik van WP-Optimize. Later zullen we de eigen tools van Kinsta behandelen. Maar eerst is het tijd om wat pre-optimalisatietaken te bespreken.
Wat je moet doen voordat je aan optimalisatie begint
Voordat je in je database duikt, zijn er een paar eenvoudige taken die je moet uitvoeren. Om te beginnen moet je altijd een volledige backup van je site en database maken. Als het ergste scenario zich voordoet en je ruïneert je site, dan kun je hem in een paar minuten terugzetten.
Je moet ook alle plugins of thema’s verwijderen die je niet gebruikt op je site. Dit kan een aantal problemen oplossen, en niet alleen met je database. Het kan ook helpen om de beveiliging van je site te versterken.
Houd er echter rekening mee dat dit, afhankelijk van de plugin of het thema, ongewenste tabellen kan achterlaten. Dit is natuurlijk precies de reden waarom we de database willen optimaliseren, dus begrijpen welke plugins en thema’s tijdelijke gegevens achterlaten zal je later helpen.
De laatste taak is iets dat je zult moeten doen zodra je inlogt in jouw favoriete databasebeheerprogramma. Databasefouten kunnen duidelijk wijzen op prestatieproblemen, dus deze moet je oplossen voordat je verder optimaliseert.
In het kort komt het erop neer dat je al je tabellen selecteert en dan de knop Check table gebruikt om een rapport te genereren.
Als je OK of iets dergelijks ziet, is dit optimaal. Eventuele fouten moeten echter worden opgelost voordat je verder gaat. Dit is waar een ondersteuningsverzoek een goed idee kan zijn.
1. De tabellen in je database optimaliseren
De eerste stap is het optimaliseren van de tabellen in je database. Bij een handmatige aanpak ga je naar de link Databases in je beheertool en kies je je database:
In veel gevallen ben je al in de database voor je WordPress site. Je ziet dan een lijst met tabellen binnen je database. Selecteer ze allemaal en kies dan de Optimize table optie uit het uitklapmenu voordat je op Go klikt:
Na enige tijd zie je een rapport met de status van elke tabel in je database:
Ga met WP-Optimize naar WP-Optimize > Database > Optimalizations. Hier klik je op de knop Run optimization uitvoeren naast de optie Optimize database tables:
De plugin zal alle tabellen doorlopen en je vervolgens een succesmelding geven. Op dit punt kun je verder gaan met post revisies.
2. Revisies van berichten opschonen
Het revisiesysteem van WordPress betekent dat elke opslag die je maakt in de loop van de tijd kan oplopen. Je kunt deze eenvoudig uit je database verwijderen met behulp van SQL queries. De meest eenvoudige manier om dit te doen is met één regel:
DELETE FROM wp_posts WHERE post_type = 'revision’;
Hiermee verwijder je alle soorten revisieberichten uit de tabel. Er zijn echter ook bijbehorende gegevens in andere tabellen. Om deze te verwijderen, kun je het volgende fragment gebruiken:
DELETE FROM wp_posts WHERE post_type = 'revision';
DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT ID FROM wp_posts);
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);
Natuurlijk moet je het juiste tabelvoorvoegsel voor je eigen database gebruiken als je dit kopieert en plakt. Met een plugin duurt deze taak enkele seconden. Net als de algemene WordPress database optimalisatie, geeft WP-Optimize je een één-klik knop vanuit WordPress:
In de toekomst kun je het aantal revisies dat WordPress gebruikt beperken door naar je wp-config.php bestand te gaan. Voeg hier de volgende regel toe aan het bestand en sla je wijzigingen op:
define( 'WP_POST_REVISIONS', X );
Hier is X
het aantal revisies dat je wilt behouden. Je zou hier ook false
kunnen opgeven, maar dat raden we niet aan. Je wilt altijd minstens één revisie hebben om op terug te vallen als je die nodig hebt.
3. Spamcomments en weggegooide items verwijderen
We kunnen ook SQL queries gebruiken om spamcomments te verwijderen. Merk op dat wanneer je comments modereert, ongewenste opmerkingen 30 dagen in je database blijven staan. Dit betekent dat opmerkingen die binnen dat tijdsbestek als spam zijn gemarkeerd in je database blijven staan.
Je kunt deze volledig verwijderen met een paar regels SQL in je databasebeheerprogramma:
DELETE FROM wp_comments, wp_commentmeta
USING wp_comments
LEFT JOIN wp_commentmeta ON wp_comments.comment_ID = wp_commentmeta.comment_id
WHERE wp_comments.comment_approved = 'spam’;
Hetzelfde geldt voor items die je binnen WordPress naar de prullenbak stuurt. Er kan veel content ‘in limbo’ zijn, die je met een andere SQL query kunt verwijderen:
DELETE p, pm, tr
FROM wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id
WHERE p.post_status = 'trash’;
Net als bij berichtrevisies kun je in wp-config.php waarden instellen voor de tijd die het duurt om prullenbak-items te verwijderen:
define( 'EMPTY_TRASH_DAYS', X )
Binnen WP-Optimize zijn er drie opties om je te helpen bij het verwijderen van spamcomments en de WordPress prullenbak:
Er is ook de optie om niet-goedgekeurde comments te verwijderen. Dit kan handig zijn in sommige situaties, maar we raden dit niet aan. Het is beter om ze te modereren en te verwijderen als dat nodig is.
4. Ongebruikte tags verwijderen
Taxonomieën zijn belangrijk voor WordPress, maar ze kunnen na verloop van tijd een enorme verzameling worden. Dit is een uitstekende manier voor het optimaliseren van je database, en net als bij andere technieken kun je een SQL query gebruiken:
DELETE t, tt
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;
De dichtstbijzijnde optie om ongebruikte tags te verwijderen binnen WP-Optimize is Clean post meta data. Dit beoordeelt of je verweesde metadata hebt en verwijdert deze:
Hoewel deze optie ook categorieën en andere gegevens kan verwijderen, is het een veilige oplossing om te gebruiken, vooral als geen enkele andere bericht of pagina ze gebruikt.
5. Pingbacks en trackbacks verwijderen
We weten niet zeker hoeveel WordPress websites pingbacks en trackbacks gebruiken in het huidige tijdperk, maar ze kunnen nog steeds je database opvullen als je de instelling aan laat staan. De eerste taak is om te controleren of je deze optie wel hebt uitgeschakeld. Dit is een eenvoudig klusje binnen de Settings > Discussion pagina binnen WordPress:
Zorg ervoor dat je in het gedeelte Default Post Settings de opties “Attempt to notify any blogs…” en “Allow link notifications…” uitschakelt en sla je wijzigingen op. Ga vervolgens terug naar je databasebeheerprogramma en voer de volgende query uit:
DELETE c, cm
FROM wp_comments c
LEFT JOIN wp_commentmeta cm ON c.comment_ID = cm.comment_id
WHERE c.comment_type IN ('trackback', 'pingback’);
Beide staan op dezelfde plaats als comments, hoewel het type anders is en daar richt de query zich op. WP-Optimize biedt twee aparte opties voor elk van deze:
Zodra je deze taak hebt voltooid, zou je geen trackbacks of pingbacks meer in je database moeten zien!
Kinsta’s automatische WordPress database-optimalisatie gebruiken
Voor Kinsta klanten heb je geen WordPress database-optimalisatieplugin nodig. We voeren continu automatische optimalisaties uit, de klok rond, voor alle sites. Dit betekent dat je niets hoeft te weten over SQL queries, waar gegevens zich bevinden in je database of iets anders dat relevant is voor WordPress database optimalisatie.
Continue database-optimalisatie is onderdeel van onze Application Performance Monitoring (APM). Dit houdt je WordPress database (en site) slank en efficiënt zonder dat je handmatig hoeft in te grijpen.
APM schoont je database op door overbodige gegevens te verwijderen, zoals transients, niet-gebruikte metadata en spamcomments. Zo kun je ervoor zorgen dat je database geoptimaliseerd blijft zonder dat je er iets voor hoeft te doen.
Het gebruik van APM is niet de focus van dit bericht, maar we behandelen het wel in onze documentatie. Als het gaat om databasemonitoring, houdt APM de langzaamste SQL query’s die worden uitgevoerd in de gaten:
Je hebt toegang tot APM via het MyKinsta dashboard, meer specifiek de APM pagina. Merk op dat je hem mogelijk eerst moet inschakelen:
Vanaf hier moet je APM wat tijd geven om gegevens te verzamelen. Maar als het eenmaal zichtbaar is, kun je de query’s controleren die mogelijk verder geoptimaliseerd moeten worden.
Databasequery’s optimaliseren voor meer efficiëntie
Het optimaliseren van de database queries die je gebruikt is cruciaal om de prestaties en snelheid van je WordPress site te verbeteren. Efficiënte query’s betekenen het sneller ophalen van gegevens, wat weer leidt tot betere laadtijden en een betere gebruikerservaring.
Aangezien je query’s kunt gebruiken om WordPress databaseoptimalisatie uit te voeren, volgen hier een paar tips over hoe je ze efficiënter kunt maken:
- Optimaliseer je querystructuren. Je zult merken dat we geen jokertekens (of sterretjes) gebruiken in onze voorbeeldqueries. In plaats van
SELECT *
te gebruiken, moet je specifiek zijn met betrekking tot de exacte kolommen die je nodig hebt. Gebruik waar mogelijk ookJOIN
in plaats van subqueries. Subqueries kunnen minder efficiënt zijn, vooral als ze geen goede structuur hebben of betrekking hebben op grote datasets. - Gebruik querycaching. Tools zoals Redis kunnen de resultaten van queries in het geheugen opslaan. Dit betekent dat de resultaten van de query uit de cache geleverd kunnen worden in plaats van de volgende keer opnieuw de database te bevragen.
Dit zijn wat korte tips, maar er is nog veel meer dat je hier kan doen. Laten we hier snel naar kijken.
Geavanceerde WordPress database-optimalisatie en tips voor probleemoplossing
‘Indexeren’ kan je helpen om een snelle referentiegids aan je database toe te voegen. Het helpt de databaseserver om gegevens sneller te vinden zonder elke rij van een tabel te scannen.
Om dit te doen identificeer je de kolommen die vaak worden gebruikt in je queries en overweeg je om er indexen aan toe te voegen. Je kunt dit doen vanuit phpMyAdmin (of vergelijkbaar). Klik eerst op de tabel die je wilt indexeren en ga naar het tabblad Structure:
Selecteer vervolgens de kolommen die je wilt indexeren en kies de Index optie onderaan de tabel:
Zodra je je wijzigingen opslaat, worden deze kolommen geïndexeerd.
Het EXPLAIN
statement kan je ook helpen om te begrijpen hoe MySQL je query uitvoert. Dit kan je helpen inefficiënties op te sporen en te begrijpen hoe je query interageert met de indexen. Om dit uit te voeren, voeg je het statement toe aan de voorkant van een bestaande query. Wanneer je het uitvoert, zal SQL uitsplitsen hoe het de query uitvoert:
We kunnen hier niet alles behandelen over het EXPLAIN
statement, hoewel de MySQL documentatie bijna alles behandelt wat je erover moet weten.
Prestaties monitoren
Het monitoren van de prestaties van je WordPress database is een essentieel onderdeel van het beheren van een site. Het helpt om potentiële problemen te identificeren voordat ze escaleren en zorgt ervoor dat je site efficiënt en responsief blijft.
Veel van de technieken die we in dit artikel behandelen gaan over prestatiemonitoring, zoals het gebruik van EXPLAIN
voor langzame queries. Er is echter veel meer mogelijk. In feite bevat phpmyAdmin zijn eigen prestatiemetingen op het tabblad Status van de server:
Hiermee kun je uitvoeringstijden en processen van queries bekijken (op het tabblad Query statistics), wat helpt bij het identificeren van queries die geoptimaliseerd moeten worden. Voor geavanceerde monitoring is MySQL Workbench van onschatbare waarde:
Dit geeft je geavanceerde featuresvoor database ontwerp, ontwikkeling en beheer. Het biedt ook prestatierapporten en diagnoses die je kunnen helpen bij het afstellen van je database.
Binnen WordPress kun je met de Query Monitor plugin databasequeries, hooks, conditionals, HTTP verzoeken en meer controleren.
Deze is vooral handig voor het opsporen van langzame queries en het identificeren van de plugins of thema’s die deze veroorzaken. In de meeste gevallen is dit echter een ontwikkelplugin, dus misschien niet geschikt voor een productiesite.
Omgaan met grote databases in WordPress
Wanneer een WordPress site groeit in content, gebruikers en verkeer, wordt de database natuurlijk groter. Een grote database is dus iets wat je vaak tegenkomt (of waar je je zorgen over maakt) als je een site beheert.
Het meeste advies dat we in dit artikel geven kan geschikt zijn voor een grote database – en het verkleinen ervan. Er zijn echter genoeg andere tips die we kunnen geven voor databases die inherent groter zijn dan gebruikelijk:
- Archiveer oudere gegevens. In plaats van alle gegevens live te houden, kun je overwegen om oude berichten of gebruikersgegevens die je niet regelmatig opent te archiveren.
- Gebruik een Content Delivery Network (CDN). Het offloaden en serveren van statische resources zoals afbeeldingen, video’s en downloads van een andere server kan de belasting van je site verminderen en hem sneller maken. Bovendien zal je site sneller laden voor gebruikers, ongeacht waar ze zich bevinden.
- Custom queries. Als je een WordPress developer bent, schrijf dan efficiënte queries voor je thema’s en plugins. Zo haal je alleen op wat je nodig hebt en houd je de efficiëntie hoog.
Je kunt zelfs geavanceerde technieken zoals tabelpartitionering en ‘database sharding‘ overwegen Hierbij worden gegevens verdeeld over meerdere databases. Dit is vaak complex en vereist meestal deskundig beheer.
Daarover gesproken, experts zijn een noodzaak als het gaat om hoge prestaties van je database en bijbehorende website. Kinsta’s WordPress hosting is schaalbaar, wordt beheerd en is geoptimaliseerd voor het platform.
Pakketten beginnen vanaf $35 per maand en onze architectuur kan alles aan, van een eenvoudige blog, helemaal tot aan grote netwerken voor grote ondernemingen. Laat ons vooral weten hoe we jouw hostingpartner voor de lange termijn kunnen worden, ongeacht je doelen.
Samenvatting
Je WordPress database is als de motor van een auto: zonder tuning zal hij niet zo goed presteren als nodig is. In feite kan een gebrek aan WordPress database optimalisatie ervoor zorgen dat je van de eerste naar de laatste plaats zakt als het gaat om zoekresultaten. Je gebruikers zullen ook merken dat je site een ondergeschoven kindje wordt, dus een tiptop database die snel werkt is cruciaal voor succes.
Er zijn veel manieren waarop je dit kunt doen, maar een combinatie van handmatige technieken, plugins en Kinsta’s eigen optimalisatietools zal je de beste voordelen opleveren. In veel gevallen kan automatisering je helpen om veel van deze taken uit te voeren zonder dat je zelf hoeft in te loggen of een specifieke tool hoeft uit te voeren.
We horen graag of onze WordPress database-optimalisatietips voor jou hebben gewerkt. Laat ons weten welke het meeste effect hebben gehad in de comments hieronder!
Laat een reactie achter