⚠️ This is an old post
It's possibly been exported and imported from at least three different blogging platforms over the years. That probably means, at best, there are broken images and links. If the post is technical in nature, any advice is probably out of date and irrelevant. Or it is really old, it was the wafflings of a teenager with too much time on his hands working out what blogging is… If it is the latter I would probably cringe if I re-read it. But it's here because it's part of my past, not my present.
You've been warned! Onwards…
After having a Wordpress blog running for the last year with 320 users posting to it, and over 1500 posts on it I’ve noticed that the database size has been rapidly approaching the 1Gb size. This struck me as much larger than expected- it only contains text, so why is it so large and how can I reduce it?
Safety warning: Make sure you have a database backup before doing any of these…
By default Wordpress helpfully makes copies of each revision you make to a post, so if you accidentally delete something mid-edit it is possible to go back and retrieve it. This is a really useful feature, however I don’t need an infinite number of revisions saved.
wp_config.php file you can set the number of revisions, or disable them entirely with the following. Here I keep the last 3, but you can set it to 0 or to any number that you want.
This limits it going forward, however the database is still full of revisions so you need to go into the database and clear out the existing revisions with the following query:
DELETE posts, relationships, meta FROM [your_table_prefix]_posts posts LEFT JOIN [your_table_prefix]_term_relationships relationships ON (posts.ID = relationships.object_id) LEFT JOIN [your_table_prefix]_postmeta meta ON (posts.ID = meta.post_id) WHERE posts.post_type = 'revision'
Being a Wordpress blog the site is constantly hit by spammers so I have installed Akismet. While this plugin automatically deletes spam comments after 15 days, it does leave a lot of data in the commentmeta table. I’ve set up a little function that automatically purges this table of Akismet data every month running this query:
DELETE FROM [your_table_prefix]_commentmeta WHERE meta_key LIKE "%akismet%"