チャットで @all メンションを有効にしたクライアントがおり、16,000 人のユーザーがいる 2 つのチャンネルがありました。それは楽しかったです!
19 回の全員へのメンションの後、彼らはすぐにそれを無効にしました。12 時間後、彼らの(強力な)システムは依然として高い CPU 負荷がかかっていました。
問題は、メンションテーブルから 320,000 件の該当レコードを削除することで解決されました。
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 は良い結果を出しませんでしたが、かなりの負荷がかかっていたことは明らかでした。すべてのインデックスは配置されています。