大型 WordPress 数据库

Fer*_*man 1 database wordpress multi-database mariadb

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

如何拆分 WordPress 数据库?

Xhy*_*ynk 5

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

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

我首先考虑使用一些数据库优化插件,或者只是手动挖掘它。确保您的选项表尽可能精简,并确保删除所有孤立数据(例如不再具有父帖子并且不在任何地方引用的媒体图像)。我见过插件在选项表中留下了数百兆字节的无用数据。当每个页面请求加载该内容时,网站就会陷入糖蜜般的状态。

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

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

最重要的是,在考虑拆分/分片数据库之前,您几乎肯定应该考虑优化缩减数据库。

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

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

示例截图

  • “postmeta”的模式可能是 WP 中效率最低的部分之一。[_Here_](http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta) 是提高其性能的技巧。 (2认同)