Wp_postmeta和wp_usermeta表太大的问题

时间:2020-09-03 作者:Brent Friar

我们有一个超过8年历史的WP+woocommerce网站。该网站拥有超过60000名用户和类似数量的订单。wp\\U Posteta有超过4000000条记录,wp\\U usermeta有超过1500000条记录。这导致了各种各样的问题,因为网站没有定期更新。该站点希望更新数据库,但每次都会崩溃,可能是因为这些表。

有什么想法吗?

1 个回复
SO网友:Aditya Agarwal

有很多事情需要考虑,

没有数据库太大,无法处理,如果你有一个大的数据库,你可能有足够的收入来获得一个真正好的托管来处理它。

数据库有频繁的读写,不仅仅是Posteta和usermeta,一般来说,我的建议是每周优化一次所有数据库表。这将使它们保持良好状态,您可以通过WP Optimize插件来实现,也可以手动转到PHPmyAdmin,选择所有表并运行Optimize命令。

这一点我没怎么试过,但因为你的网站是WooCommerce,而且可能有很多插件,可能是数据库的巨大规模没有影响,但post meta查询的数量对你的影响更大。因此,您可以尝试使用W3 Total Cache,它具有一种称为数据库缓存的功能,这可以加快对数据库的查询过程,从而提高性能并减少负载。

在我自己的网站上,我使用一些代码在用户meta中存储我所有作者的每日统计信息,过去它每天添加大约1600行,然后慢慢地开始阻塞服务器。1600并不多,但在一个月内,它会变成48000,而在一年内,它会变成4800000,这是一个很大的数字。所以我真的调查了一下,发现了两件事,

如果您要存储大量自己的元数据,那么最好放置一个序列化数组,而不是使用seprate键。我以前有200位作者,每天要存储8件东西。总共1600行,但后来我将这8行放入一个数组,并序列化并存储在1个键下,使其每天200行。这不会对数据库的大小产生重大影响,但随着时间的推移,它肯定会加快站点的速度。

下一个方案要复杂得多,但很有效。WordPress很混乱,我们经常安装和卸载许多插件,或者根据我们的需要更换插件,插件通常会将设置和配置存储到数据库中,卸载时不会删除它,因为将来重新安装插件时,不必重新配置。但很多时候,这会增加额外的重量。我以前使用过页面生成器,但后来我放弃了它们,转而使用自定义代码。这是一个很好的举措,但几天后我发现我的数据库中仍然有很多elementor的Posteta。因此,我运行了SQL查询来删除elementor,并删除了几千行,使事情变得更干净、更有效。

除此之外,像往常一样,投资一个好的主机,最好有一个专用的服务器来获得无与伦比的体验,使用最新版本的SQL和PHP

相关推荐

$wpdb selects wrong database

我在另一个WordPress网站的文件夹中创建了一个新的WordPress网站。示例-主站点。com-mainsite。com/第二站点我创建了一个插件,并使用$wpdb 将数据插入数据库,插件将数据插入第一个/父站点的数据库。我使用的代码包括$wpdb 如下所示:$path = $_SERVER[\'DOCUMENT_ROOT\']; include $path . \'/wp-load.php\'; include $path . \'/wp-config.php\'; inc