适用于数千名用户的WordPress用户元扩展

时间:2013-02-14 作者:Sunyatasattva

我为一个与WordPress用户管理集成的客户端开发了一个CRM插件,并在wp_usermeta 桌子

然而,客户的客户数据库呈指数级增长,我们现在有数千行,这为我们提供了数万行wp_usermeta: 现在我开始担心scalability 其中architecture.

有没有人有过用WordPress方式管理这么多用户的经验?是否应将列添加到wp_users 表,而不是依赖wp_usermeta 一在此阶段,我如何诊断/分析WordPress和我自己的代码性能?

我从未处理过如此大量的数据,而且数据的增长速度如此之快,任何指针都是有价值的。

2 个回复
最合适的回答,由SO网友:Otto 整理而成

表的大小不是真正的问题,您在该表上运行的查询可能是。

例如,如果您根据存储在用户元表中的数据选择用户,那么该查询将高度未优化,因为meta\\u值不是索引字段。在这种情况下,您可能需要添加额外的索引或考虑以不同的方式存储特定数据,例如使用自定义分类法。

一般来说,你存储为元的东西永远不应该是你专门搜索的东西。这适用于WordPress中的所有元表。Meta主要设计为通过Meta\\u键拉出,而不是通过Meta\\u值拉出。分类法将可能的值限制在一个集合中,并以不同的方式组织信息,因此当“值”作为您选择的值时,分类法会做得更好。

注意,通过meta\\u键和meta\\u值进行选择通常是可以的,因为mySQL将首先优化基于meta\\u键的查询,从而将要搜索的数据量减少到(希望)可管理的限度。如果这成为一个问题,您可以通过向元表中添加一个新索引来“修复”它,该索引上有meta\\u键和meta\\u值,但是由于meta\\u值是长期的,您需要根据您的数据将该索引的长度限制在合理的范围内,如20-30或其他。请注意,此索引可能比实际数据大得多,并且会大幅增加所需的存储空间。然而,在这些类型的查询中,它会快得多。如果这成为一个真正的问题,请咨询合格的DBA。

仅供参考,请访问WordPress。org我们注册了大约1100万用户。每个用户的元数据数量各不相同,每个用户可能至少有8行,最多大约250行。users表约为2.5 GB,usermeta表约为4 GB。大多数情况下,似乎运行正常,但偶尔我们会发现一些奇怪的查询,需要进行优化。

SO网友:Mark Kaplun

除非您运行自己的查询,而不是使用API,否则表的大小并不重要,因为wordpress通过表的索引运行查询,MYSQL应该优化这种查询。每个查询还获取一个查询中的所有元信息。

如果您坚持认为可以使用用户ID上的哈希作为表名将用户元表拆分为多个表,那么您可能需要向wp\\u db类写入一个替换项,以便根据查询访问正确的表。如果您有兴趣遵循这条路径,那么可以寻找解决方案来处理包含许多博客的大型网络安装。

但如果您现在没有任何性能问题,那么您可以在不进行任何重大调整的情况下进一步发展。当您开始遇到性能问题时,只需将DB移动到速度更快的服务器,这将比您对WP访问该信息的方式所做的任何操作都更具成本效益。

结束

相关推荐

Users Role and Access

我是一个新手,所以请耐心等待。我正试图创建一个网站与程序员使用wordpress,但不使用它的博客或帖子<我自己不是程序员。我希望人们注册该网站,默认情况下,他们的角色将是修改后的订阅者。这意味着他们将无法访问管理员,也无法在网站上进行任何编辑。他们所能做的就是查看页面。此外,我想限制他们只查看一个或多个特定页面。管理员可以稍后更改其状态,并将其角色设置为常规订阅者。我真正想做的是创建一个有完全限制的网站用户将注册,但在管理员审核其注册并授予其访问权限之前,用户仍无法获得访问权限。这可能吗?