Tuvimos un cliente que activó las menciones a @all en el chat, con dos canales de 16k usuarios. ¡Eso fue divertido!
Después de 19 menciones a todos, rápidamente lo desactivaron de nuevo. 12 horas después, su (potente) sistema todavía tenía una alta carga de CPU.
El problema se resolvió al eliminar los 320k registros infractores de la tabla de menciones
delete from chat_mentions
where chat_message_id in (
(select chat_message_id
from chat_mentions
group by chat_message_id having count(*) > 100)
);
pero todavía nos preguntábamos por qué esto estaba causando tantos problemas.
Todavía se estaban ejecutando varias instancias de esta consulta.
Como las filas ya no estaban, un explain no arrojó buenos resultados, pero está claro que estaba haciendo un trabajo pesado. Todos los índices están en su lugar.