首页 > 解决方案 > 大型 WordPress 数据库

问题描述

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

如何拆分 WordPress 数据库?

标签: databasewordpressmariadbmulti-database

解决方案


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

也就是说,大型数据库本质上并不是一件坏事。然而,糟糕的是一个优化的数据库,一个臃肿的数据库(许多插件只是转储数据(通常是 postmeta 或选项表),以及未优化的数据库查询

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

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

新站点充满了 100% 可行的测试数据,而数据库目前大约有 3 或 4 个演出。问题是我的表已经过优化,列被适当地索引,我什至有自定义的关系表将帖子类型链接在一起。我在那里有大约 450,000 篇各种帖子类型的帖子,并且使用$wpdb类的简单查询,它可以在不到一秒的时间内筛选和加载数十或数百个帖子,而不会破坏内存使用。

最重要的是,在考虑拆分/分片数据库之前,您几乎可以肯定地考虑优化精简您的数据库。

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

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

示例截图


推荐阅读