MySQL pasa demasiado tiempo limpiando tablas tmp

MySQL pasa demasiado tiempo limpiando tablas tmp

Estoy ejecutando algunas migraciones de Django en una instancia de AWS RDS MySQL. Mi equipo ha probado las migraciones muy exhaustivamente y funcionaron bien (incluso tardaron menos de 30 minutos cuando se ejecutaron en nuestras computadoras portátiles con una copia de nuestros datos de producción).

Ahora que estamos migrando la base de datos de producción, nos llevará más de 2 horas. Cuando corro:

mysql> SHOW PROCESSLIST;

Puedo ver el proceso activo y está haciendo cosas, pero muy lentamente. Nuestras migraciones se encuentran en medio de una migración de datos y las declaraciones SELECT (estamos recuperando filas a través del ORM en lotes de 100) tardan hasta 32 segundos cada una. Los últimos 30 segundos se pasan en un estado de "eliminación de tabla tmp".

¿Alguna idea de qué está causando esto?

Respuesta1

estamos obteniendo filas a través del ORM en lotes de 100

Consultas ineficientes para agrupar los datos. Dado que el DBMS utiliza tablas temporales, tiene que examinar muchos, MUCHO más datos de los que se incluyen en el conjunto de datos de salida, y la mayoría de ellos se descartan.

Vaya a StackOverflow y publique su esquema y las consultas que está utilizando para extraer los datos para obtener consejos más específicos, pero IME, ORM está tan roto en principio que generalmente es más fácil cambiar a fábricas que intentar que funcione de manera eficiente. seguramente.

información relacionada