INSERT DELAYED en MySQL

Bases de datos, PHP Añadir comentario

Hace tiempo que programé un sistema para servir medios publicitarios online a diversas webs y blogs.  Si bien al principio no tuvimos problemas, hace semanas el tráfico del script que sirve la publicidad se ha visto cuadruplicado, llegando a las 5.000.000 de impresiones diarias, ésto dejó al servidor mysql al borde del colapso total con un 99% de uso de CPU.

¿Cómo lo solucioné?.

Primer intento: fracaso total.

Traté de migrar la BBDD a un nuevo servidor (estaba alojada en el mismo servidor que la web), y el resultado fué aún peor, el sistema dejaba de responder completamente, era peor el remedio que la enfermedad.

Segundo intento: éxito.

Volví al punto de partida, y tras un rápido análisis con MyTop (utilidad recomenda  al 100%) descubrí que había cientos de INSERT DELAYED correspondientes a las estadístias esperando ser realizados (por tanto, activos en memoria), ésto estaba causando un inmenso overhead.

¿Cuál fué la solución?, quitar el DELAYED y realizar inserts normales, a partir de ese momento, el uso de CPU no ha subido en ningún momento del 5%, increible pero cierto.

Así que, bajo mi experiencia personal concluyo que el INSERT DELAYED no sirve para nada, al menos en MySQL.

¿Tienes dudas, preguntas o comentarios?.

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Iniciar sesión