大型 WordPress 数据库

Large WordPress database

我的数据库大小超过 10GB,这会降低网站速度。我想拆分它并将这些数据库分离到专用服务器。我正在使用 MariaDB。

如何拆分 WordPress 数据库?

看看 WPSE 上的这个答案:https://wordpress.stackexchange.com/questions/2825/wordpress-sharding-which-multi-db-plugin-to-use

也就是说,大型数据库本身并不是坏事。 不好,但是 未优化的数据库 膨胀的数据库 (许多插件只是转储数据(通常是 post 元或选项 tables),以及 未优化的数据库查询 .

有一些数据库优化插件我会首先考虑使用,或者只是手动挖掘它。确保您的选项 table 尽可能精简,并确保删除所有孤立数据(例如不再具有父 post 且未在任何地方引用的媒体图像)。我已经看到插件在选项 table 中留下了 数百兆字节 的所有但无用的数据。当它在每个页面请求上加载时,网站就会变得像糖蜜一样。

从纯粹的轶事角度来看,我目前正在对一个 slow/bloated 有十年历史的网站进行彻底的重构。它使用了大量的插件,数据库中有大量 table 的重复信息,有许多 元查询 (它们没有索引或键控,因此速度非常慢在大型网站上)并且选项 table.

中存储了大量 useless/outdated 选项

新站点充满了 100% 可行的测试数据,数据库目前大约有 3 或 4 GB。问题是我的 tables 被优化,列被适当地索引,我什至有自定义关系 post tables 将 post 类型链接在一起。我在那里有大约 450,000 post 各种 post 类型,并且使用 $wpdb class 的简单查询,它可以筛选和加载数十或数百个 posts 在几分之一秒内没有炸毁内存使用量。

最重要的是,在考虑 splitting/sharding数据库。

另一种选择是考虑改进您的硬件,即拥有一台主机和一台数据库机器,这将本质上提高性能,因为每台机器都可以针对手头的任务进行优化,而不是共享它不共享的资源'不需要。

这是我的一个请求的简单屏幕截图。这是从一个页面加载 200 个自定义 post 类型 table,其中有 450,000 条记录。每个自定义 post 类型与 0-20 个其他 post 类型相关,一个甚至与 1,500 个其他类型相关 - 尽管尚未完全优化,但它仍然几乎立即加载。

你能检查一下数据库里面的东西吗,因为通常 10GB 的数据库不是很常见。除非你有大量的帖子或评论,否则这是非常不寻常的。检查哪个 table 包含最多 space 并检查 table 内部。

还要检查 wp_users 和 wp_comments table 如果占用的大小最多,那么我确定这是垃圾邮件发送者的影响!

只需检查用户并删除垃圾评论。可能这不是一个好的解决方案,因为数据库太大了。