我们的一位客户在聊天中启用了 @all 提及功能,涉及两个拥有 16k 用户(共 32k 用户)的频道。那真是一段“有趣”的经历!
在提及了两次 @all 之后,他们很快就将其关闭了。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 命令没有给出好的结果,但很明显它在进行繁重的处理。所有索引都已到位。