Elke pagina-lading, formulierindiening, plugin-operatie en gebruikerssessie in WordPress omvat databasequery's. In de loop van de tijd accumuleert de database overhead: oude postrevisies, verlopen transiënten, weesmetadata, spamreacties en ongebruikte tabellen van gedeactiveerde plugins. Deze bloat vertraagt query's, vergroot back-upgroottes en degradeert de algehele siteprestaties. Deze gids behandelt hoe je databasebloat kunt identificeren, het veilig kunt opruimen en kunt voorkomen dat het terugkomt.
Wat WordPress in de Database Opslaat
Begrijpen wat er in je database leeft, helpt je identificeren wat veilig kan worden verwijderd. Een standaard WordPress-installatie gebruikt 12 kern tabellen, en plugins voegen hun eigen tabellen toe indien nodig.
| Tabel | Opslaat | Veelvoorkomende Bloat Bron |
|---|---|---|
| wp_posts | Berichten, pagina's, revisies, bijlagen, aangepaste berichttypen | Postrevisies, auto-drafts |
| wp_postmeta | Metadata voor berichten (aangepaste velden, plugin-gegevens) | Weesmeta van verwijderde berichten |
| wp_options | Site-instellingen, plugin-instellingen, transiënten | Verlopen transiënten, oude plugin-instellingen |
| wp_comments | Reacties en trackbacks | Spamreacties, verwijderde reacties |
| wp_commentmeta | Metadata voor reacties | Akismet-metadata voor verwijderde reacties |
| wp_usermeta | Gebruikersmetadata | Sessie-tokens, plugin-gebruikersgegevens |
| wp_termmeta | Metadata voor categorieën en tags | Weestermmetadata |
Veelvoorkomende Bronnen van Database Bloat
Postrevisies
WordPress slaat een revisie op elke keer dat je op "Concept Opslaan" of "Bijwerken" klikt op een bericht of pagina. Een bericht dat 50 keer is bewerkt, heeft 50 revisies opgeslagen in de wp_posts-tabel, elk met zijn eigen set postmeta-invoeren. Op een site met honderden berichten kunnen revisies duizenden onnodige database-rijen vertegenwoordigen.
Transiënten
Transiënten zijn tijdelijke gegevens die in de wp_options-tabel door de WordPress-kern en plugins worden opgeslagen. Ze hebben vervaltijden, maar WordPress verwijdert verlopen transiënten niet automatisch. Ze accumuleren in de loop van de tijd en kunnen de opties-tabel aanzienlijk laten groeien, vooral op sites met veel plugins.
Weesgegevens
Wanneer je een bericht verwijdert, kan de metadata (wp_postmeta-invoeren) niet worden verwijderd. Evenzo kan het verwijderen van reacties, gebruikers of termen weesmetadata-rijen achterlaten. Gedeactiveerde en verwijderde plugins laten vaak hun databasetabellen achter, wat ruimte verbruikt en je database rommelig maakt.
Spam en Verwijderde Inhoud
Spamreacties, verwijderde berichten en verwijderde reacties blijven in de database totdat ze handmatig worden geleegd. Sites met Akismet of andere spamfilters kunnen duizenden spamreacties accumuleren die periodiek moeten worden opgeruimd.
Auto-Drafts
WordPress maakt auto-draft berichten aan wanneer je op "Nieuwe Toevoegen" in de berichteditor klikt, zelfs als je nooit publiceert. Deze accumuleren in de loop van de tijd en dienen geen doel nadat de bewerkingssessie is beëindigd.
Handmatige Database Opruiming via SQL
Voor degenen die zich comfortabel voelen met SQL, kun je direct opruimen met phpMyAdmin of een databaseclient. Maak altijd een back-up van je database voordat je opruimquery's uitvoert.
Verwijder Postrevisies
-- Verwijder alle postrevisies
DELETE FROM wp_posts WHERE post_type = 'revision';
-- Verwijder weespostmeta (metadata voor verwijderde berichten)
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WOpruimen van Transients
-- Verwijder verlopen transients
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();
-- Verwijder de transientgegevens voor verlopen transients
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name NOT LIKE '%_transient_timeout_%';
Verwijder Spam en Verwijderde Reacties
-- Verwijder spamreacties
DELETE FROM wp_comments WHERE comment_approved = 'spam';
-- Verwijder verwijderde reacties
DELETE FROM wp_comments WHERE comment_approved = 'trash';
-- Verwijder weescommentaarmetadata
DELETE cm FROM wp_commentmeta cm
LEFT JOIN wp_comments c ON cm.comment_id = c.comment_ID
WHERE c.comment_ID IS NULL;
Plugin-gebaseerde Database Opruiming
Als je de voorkeur geeft aan een GUI-gebaseerde benadering, zijn er verschillende plugins die database-optimalisatie met planningsmogelijkheden afhandelen:
WP-Optimize
WP-Optimize is een gratis plugin die revisies, concepten, spam, transients en weesgegevens opruimt. Het optimaliseert ook databasetabellen en ondersteunt geplande opruimingen. De Pro-versie voegt multisite-ondersteuning en geavanceerde planning toe.
WP Rocket Database Optimalisatie
WP Rocket bevat een Database-tabblad dat revisies, auto-drafts, verwijderde berichten, spamreacties, transients en tabeloptimalisatie afhandelt. Aangezien WP Rocket voornamelijk een caching-plugin is, krijg je database-opruiming samen met prestatieoptimalisatie in één tool.
Geavanceerde Database Cleaner
Deze plugin gaat dieper door tabellen te detecteren die zijn achtergelaten door gedeactiveerde plugins en wees cron-evenementen. Het categoriseert tabellen als WordPress-kern, plugin-gecreëerd of onbekend, waardoor je kunt identificeren welke tabellen veilig kunnen worden verwijderd.
Plugin
Gratis Versie
Geplande Opruiming
Tabeldetectie
WP-Optimize
Ja
Ja
Basis
WP Rocket
Nee (alleen Premium)
Ja
Nee
Geavanceerde Database Cleaner
Ja
Alleen Pro
Ja (gedetailleerd)
wp-config.php Optimalisaties
Voorkom database-uitbreiding aan de bron door deze constanten toe te voegen aan je wp-config.php-bestand:
Beperk Postrevisies
// Houd alleen 5 revisies per post (aanbevolen)
define( 'WP_POST_REVISIONS', 5 );
// Schakel revisies volledig uit (niet aanbevolen voor de meeste sites)
define( 'WP_POST_REVISIONS', false );
Het instellen van revisies op 5 biedt voldoende geschiedenis om van fouten te herstellen, terwijl onbeperkte revisiegroei wordt voorkomen. Voor inhoudsrijke sites met frequente bewerkingen is 10 revisies een redelijke alternatieve optie.
Auto-Leeg Prullenbak
// Leeg prullenbak elke 7 dagen (standaard is 30)
define( 'EMPTY_TRASH_DAYS', 7 );
// Schakel prullenbak uit (items worden onmiddellijk verwijderd - gebruik met voorzichtigheid)
define( 'EMPTY_TRASH_DAYS', 0 );
Autosave Interval
// Verhoog autosave interval naar 5 minuten (standaard is 60 seconden)
define( 'AUTOSAVE_INTERVAL', 300 );
Optimaliseren van Databasetabellen
Na het verwijderen van rijen, voer een OPTIMIZE-operatie uit om gefragmenteerde ruimte terug te winnen:
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta;
Plan dit maandelijks of na grote opruimoperaties. De meeste opruimplugins bevatten tabeloptimalisatie in hun geplande taken.
Automatische Opschoning Inplannen
Stel geautomatiseerde schema's in: wekelijkse opschoning van transiënten en spam, maandelijkse verwijdering van revisies en optimalisatie van tabellen, en kwartaalcontroles van verlaten plugin-tabellen. WP-Optimize en WP Rocket ondersteunen beide geplande opschoning. Configureer ze tijdens daluren.
Databasegrootte Monitoren
Volg de grootte van je database om bloat vroegtijdig op te sporen. Voer deze query uit om de grootte van individuele tabellen te zien:
SELECT table_name AS 'Tabel',
ROUND(data_length / 1024 / 1024, 2) AS 'Gegevens (MB)',
table_rows AS 'Rijen'
FROM information_schema.tables
WHERE table_schema = 'jouw_database_naam'
ORDER BY (data_length + index_length) DESC
LIMIT 20;
Als wp_options meer dan 5 MB overschrijdt of wp_postmeta groter wordt dan 100 MB, is het tijd voor een opschoning. Deze tabellen worden vaak opgevraagd, dus hun grootte beïnvloedt rechtstreeks de laadtijden van pagina's.
Voor een uitgebreide aanpak van prestatieoptimalisatie die database-optimalisatie omvat naast caching, beeldoptimalisatie en serverconfiguratie, lees onze WordPress snelheid optimalisatiegids. Voor voortdurende databasegezondheid als onderdeel van je onderhoudsroutine, zie onze WordPress onderhoudsgids.
Voor meer details, raadpleeg de officiële documentatie: WordPress Database API.
Veelgestelde Vragen
Is het veilig om postrevisies uit de database te verwijderen?
Ja, het verwijderen van postrevisies is veilig en heeft geen invloed op je gepubliceerde inhoud. Revisies zijn historische momentopnamen van conceptwijzigingen. Zodra je inhoud is afgerond, dienen revisies voor de meeste sites geen doel meer. Maak echter altijd een back-up van je database voordat je een opschoning uitvoert.
Zal database-optimalisatie mijn sitesnelheid merkbaar verbeteren?
De verbetering hangt af van hoe bloat je database is. Sites met 50.000+ verlaten rijen of een wp_options-tabel die meer dan 10 MB overschrijdt, zullen merkbare verbeteringen zien in laadtijden van pagina's en de responsiviteit van het beheerdersdashboard. Kleinere sites kunnen marginale verbeteringen zien. Database-optimalisatie werkt samen met caching en andere prestatiemaatregelen voor cumulatieve verbetering.
Hoe vaak moet ik mijn WordPress-database optimaliseren?
Voor actieve sites met regelmatige inhoudsupdates is maandelijkse optimalisatie een goede basislijn. Sites met veel verkeer en frequente opmerkingen, WooCommerce-transacties of formulierindieningen kunnen profiteren van wekelijkse opschoning van transiënten en spam met maandelijkse tabeloptimalisatie.
Kunnen database-opruimplugins mijn site breken?
Betrouwbare plugins zoals WP-Optimize en WP Rocket zijn ontworpen om veilig te zijn. Ze richten zich op bekende bloatcategorieën (revisies, transiënten, spam) en raken essentiële gegevens niet aan. Het risico neemt toe wanneer je handmatig plugin-specifieke tabellen verwijdert. Als je niet zeker weet of een tabel nodig is, laat deze dan staan en onderzoek eerst het doel ervan.
Wat is het verschil tussen OPTIMIZE TABLE en het verwijderen van rijen?
Het verwijderen van rijen verwijdert gegevens uit de tabel. OPTIMIZE TABLE reorganiseert de fysieke opslag van de tabel nadat rijen zijn verwijderd, waardoor schijfruimte wordt herwonnen en het gegevensbestand wordt gedefragmenteerd. Zie het als het verwijderen van bestanden (rijen verwijderen) versus het defragmenteren van je harde schijf (de tabel optimaliseren).
Moet ik InnoDB of MyISAM gebruiken voor WordPress-tabellen?
WordPress gebruikt standaard InnoDB sinds versie 5.5, en het is de aanbevolen opslagengine. InnoDB ondersteunt rij-niveau vergrendeling (beter voor gelijktijdige gebruikers), transacties en crashherstel. MyISAM is sneller voor leesintensievere bewerkingen, maar mist deze betrouwbaarheidseigenschappen. Als je MyISAM-tabellen in je database vindt, wordt over het algemeen aanbevolen om ze naar InnoDB te converteren.
Hoe identificeer ik tabellen die door gedeactiveerde plugins zijn achtergelaten?
De Advanced Database Cleaner-plugin kan niet-kern tabellen detecteren en categoriseren. Alternatief kun je de SQL-query SHOW TABLES uitvoeren en de tabelnamen vergelijken met de WordPress-kern tabellen en je momenteel actieve plugins. Tabellen met voorvoegsels die overeenkomen met gedeactiveerde plugins zijn kandidaten voor verwijdering.
Voegt WooCommerce aanzienlijke databasebloat toe?
Ja. WooCommerce slaat bestelgegevens, productmetadata, klantensessies en transiënten op die aanzienlijk groeien op actieve winkels. Gebruik WooCommerce > Status > Hulpmiddelen om regelmatig verlopen transiënten en sessies te wissen.
Optimaliseer Prestaties vanuit Elke Hoek
WP Rocket behandelt caching, database-opruiming en prestatieoptimalisatie in één plugin, zodat je je site soepel kunt laten draaien.
Ontdek WP Rocket →



