У нас был клиент, который включил упоминания @all в чате с двумя каналами по 16 тысяч пользователей. Было весело!
После 19 упоминаний всех они быстро отключили эту функцию. Спустя 12 часов их (мощная) система всё ещё работала с высокой загрузкой процессора.
Проблема была решена путём удаления 320 тысяч проблемных записей из таблицы упоминаний:
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 не дала хороших результатов, но очевидно, что система выполняла тяжёлую обработку. Все индексы на месте.