Запрос вызывает нагрузку на ЦП 400%

У одного из клиентов в чате были включены упоминания @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 не дала полезных результатов, но очевидно, что система выполняла очень тяжёлую работу. Все индексы были на месте.

1 лайк