在 WordPress 数据库中,通常占用容量最大的表是 wp_posts 表(如果使用了默认的表前缀 wp_)。
为什么 wp_posts 表通常最大?
wp_posts 表存储了以下内容:
- 文章(Posts)
- 页面(Pages)
- 自定义文章类型(Custom Post Types)
- 草稿(Drafts)
- 修订版本(Revisions)
- 媒体附件(Attachments,即上传的图片、文件等,作为媒体项存储)
其中,文章修订版本(Revisions) 是导致该表膨胀的主要原因之一。每当你编辑一篇文章并保存草稿或更新,WordPress 默认会保留一个修订版本,这些都会记录在 wp_posts 表中,且类型为 revision。
此外,如果你上传了大量媒体文件(如图片),每个文件也会作为一条记录存入 wp_posts 表(post_type = ‘attachment’),进一步增加其体积。
其他可能占用较大空间的表:
-
wp_postmeta- 存储文章的自定义字段(metadata),如 SEO 插件、页面生成器设置等。
- 如果网站使用了很多插件(如 WooCommerce、Elementor、Yoast SEO),这个表也可能变得非常大。
- 每条 meta 数据单独一行,容易产生大量数据。
-
wp_options- 存储网站设置、插件配置等。
- 一般不会特别大,但某些插件可能会将大量数据序列化存储在这里,造成“option bloat”。
-
wp_comments和wp_commentmeta- 如果网站评论很多,这两个表也会增长,但通常不如
wp_posts和wp_postmeta大。
- 如果网站评论很多,这两个表也会增长,但通常不如
-
wp_woocommerce_sessions(如果使用 WooCommerce)- 用于存储用户会话,可能变得很大,尤其是未定期清理时。
如何查看哪个表最大?
你可以通过以下方式检查数据库各表大小:
方法一:使用 SQL 查询
SELECT
table_name AS 'Table',
round(((data_length + index_length) / 1024 / 1024), 2) AS 'Size (MB)'
FROM information_schema.tables
WHERE table_schema = 'your_database_name'
ORDER BY (data_length + index_length) DESC;
替换
'your_database_name'为你的实际数据库名。
方法二:使用 phpMyAdmin 或 Adminer
进入数据库管理工具,选择你的 WordPress 数据库,通常会显示每张表的数据和索引大小。
方法三:使用 WordPress 插件
如:
- WP-Optimize
- Advanced Database Cleaner
- phpMyAdmin for WordPress
这些插件可以可视化地展示各表大小,并帮助清理冗余数据。
如何优化大表?
-
清理文章修订版本:
DELETE FROM wp_posts WHERE post_type = 'revision';或使用插件自动清理。
-
限制修订版本数量:
在wp-config.php中添加:define('WP_POST_REVISIONS', 3); // 最多保留3个修订版 // 或禁用修订 define('WP_POST_REVISIONS', false); -
定期清理垃圾评论、过期数据。
-
使用缓存插件减少数据库压力。
总结
✅ 最常占空间的表:wp_posts
其次是 wp_postmeta,尤其在使用大量插件或自定义字段时。
建议定期监控和优化数据库,避免性能下降。
CDNK博客