我可以在不同的数据库或服务器上拆分一个巨大的wp_postmeta表吗?

时间:2020-07-24 作者:Asifur Rahman

这个问题没有任何代码,它更多的是一个理论问题。我需要关于寻找什么方法的指导。我以前在谷歌上搜索过,但在这个具体案件中没有找到任何线索。

我有2台服务器(CentOS),其中设置了MySQL数据库。在一台服务器(服务器1)中,我安装了Wordpress(LAMP),并设置了数据库。网站正在运行。但是,我想拆分当前位于服务器1上的数据库,并将其部分托管在服务器2上。现在,我知道了如何在WordPress的wp配置中使用远程数据库。php文件,但这里我想使用两个数据库。

在这种情况下,我可以尝试从第二台服务器进行手动查询。然而,我之所以要拆分数据库,是因为一个表包含100多万个条目。因为该表也将被拆分,并且该表是wordpress的默认post元表,我不知道哪些post将位于哪个数据库中(超过百万个条目!),我无法使用自定义查询。我还知道默认的$wbdp只从1个数据库中提取数据。

总结一下这个问题,有没有什么方法可以在不使用自定义数据库查询的情况下使用多个Wordpress数据库?

1 个回复
SO网友:mozboz

不可能。这实际上是不可能的,主要是因为此表没有单一的接口,您可以在其中实现所需的功能,即使可以,也会带来一些非常棘手的问题。

为什么这或多或少是不可能的shard Wordpress中的wp\\U Posteta表。(这是相关的,因为如果您可以切分一个表,那么将切分放在多个数据库/服务器上的步骤要小得多)。

在切分中,一些代码必须能够根据一些简单的算法找出在哪里查找结果,然后能够查询only 那个地方。例如,如果一个数据库中有1000万人,可以将他们放在不同的表或不同的数据库中,按他们名字的第一个字母*进行拆分。这意味着每次运行获取有关人员的所有信息的函数时,它都会首先根据其姓名*的第一个字母找到正确的表。

这是不可能的,因为posts和/或postsmeta表没有单一的接口允许您放置此代码in one place. 为了实现您想要的结果,根据某种确定性算法,每个接触Posteta表或加入Posteta表的地方都需要更改,以确定要查看这两个地方中的哪一个。在确定联接方面,您也会遇到一些极端棘手的问题(例如,跨数据库/服务器的联接可能是可能的,但听起来它会很快挫败任何性能提升)。

你到底想做什么

听起来你好像遇到了问题,你认为这就是解决方案,但这几乎肯定不是解决任何问题的好办法(或是解决单个Wordpress安装中的任何问题)。也许有一个更简单更容易的解决方案,或者你在某处得到了一些不好的建议/信息。

为什么有100万行是个问题?您只是想优化查询以更快地运行吗?您是否在某处磁盘空间不足?您是否有一些没有添加到问题中的假设/限制?

[*]注意,你可能会尝试用一些大小大致相同的东西进行切分,你可能会创建某种索引,但这只是一个示例,请阅读Wikipedia页面了解更多信息。

相关推荐

在创建函数.php之后,对未定义函数的调用是_BLOG_INSTALLED()

我想在中放置一些自定义代码functions.php 这是我无法做到的。为什么我在创建后会出现以下错误(即使是空的)functions.php? 我正在使用WP 5.4.2Heroku-wp?Fatal error: Uncaught Error: Call to undefined function is_blog_installed() in /app/public.built/wp-includes/load.php:606 Stack trace: #0 /app/public.built/wp-