我们的一位客户在聊天中启用了 @all 提及功能,涉及两个拥有 16k 用户(共 32k 用户)的频道。那真是有趣!
在提及 @all 19 次后,他们很快就将其关闭了。12 小时后,他们(强大的)系统仍然处于高 CPU 负载状态。
问题通过清除 mentions 表中 320k 条违规记录得以解决。
delete from chat_mentions
where chat_message_id in (
(select chat_message_id
from chat_mentions
group by chat_message_id having count(*) > 100)
);
但我们仍然不明白为什么这会引起如此大的问题。
此查询 仍然在运行。
由于行已删除,explain 命令没有给出好的结果,但很明显它在进行繁重的处理。所有索引都已就位。