altis / roles-to-taxonomy
WordPress 插件,用于将用户角色和用户等级存储在分类法中,以提升性能。
0.1.5
2023-01-04 16:28 UTC
README
WordPress 插件,用于将用户角色和用户等级存储在分类法中,以提升性能。
WordPress 数据库中有许多用户会导致按角色、用户等级查询用户或计数用户时性能变差。这是特别的问题,因为默认的 WordPress 管理员用户列表表、帖子表和帖子编辑界面都会执行这些查询。
默认 WordPress 存储机制的实质问题是使用帖子元数据存储用户等级和角色。更糟糕的是,角色以序列化数组的形式存储,因此按角色查询用户的任何查询都会导致 MySQL LIKE
查询在一个未索引的文本列(meta_value
)上。
Roles to Taxonomy 注册了两个影子分类法以关联用户对象与角色/用户等级术语。这导致在特定角色中的用户查找速度大大提高。术语 count
字段也用于在某些情况下计算用户数量。
性能比较(220万网络用户,150万单个站点用户)
用法
激活插件时,需要将现有用户角色和等级填充到分类法中。该插件附带一个 WP CLI 命令以执行现有角色的同步。
wp roles-to-taxonomy sync [--verbose] [--batch-size=<number>] [--progress] [--offset=<number>] [--fast-populate] [--limit=<number>]
batch-size=x
指定一次处理的用户块大小。如果您有10,000+用户,您希望将其设置为合理的块大小(例如5,000),以避免耗尽所有可用内存。progress
将输出进度条。limit=x
将限制同步到分类法中的用户角色总数。offset=x
将从给定的偏移量数字开始更新用户。fast-populate
将启用一个非常快速的术语/分类法填充模式。这使用许多直接 SQL 查询,从而绕过 WordPress 进程、钩子、对象缓存等。这仅建议您尚未将任何用户同步到分类法。这应在您有100,000+用户时使用。在测试中,它能够在15分钟内以每分钟100万用户的速度插入使用角色和等级术语。