Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ GaussDB(for MySQL)/ Preguntas frecuentes/ Rendimiento de bases de datos/ ¿Cómo manejo un gran número de tablas temporales que se generan para transacciones largas y un alto uso de memoria?
Actualización más reciente 2023-12-14 GMT+08:00

¿Cómo manejo un gran número de tablas temporales que se generan para transacciones largas y un alto uso de memoria?

Escenario

El uso de memoria de una instancia de GaussDB(for MySQL) siguió aumentando de 11:30 a 12:27 y alcanzó el límite de memoria.

Figura 1 Uso de memoria

Causas posibles

  1. Compruebe el archivo processlist.log. En este ejemplo, que se muestra a continuación, hubo dos sentencias SQL lentas en ese período de tiempo.
    Figura 2 Sentencias de SQL lentas
  2. Analizar los registros de consultas lentos generados en ese período de tiempo. Había alrededor de 90 GB de datos y alrededor de mil millones de filas de datos en los registros, y había dos sentencias SQL que tardaron de 40 a 50 minutos en ejecutarse. El tiempo de ejecución básicamente se superpuso cuando el uso de memoria subió en los resultados de monitoreo, por lo que sabemos que el alto uso de memoria fue causado por tablas temporales.

Solución

  1. Actualice las especificaciones de instancia para mantener el uso de memoria dentro de un rango adecuado, evitando que un aumento repentino en el tráfico cause un bloqueo de la OOM. Para obtener más información, consulte Cambio de las vCPU y memoria de una instancia de base de datos.
  2. Optimice las sentencias SQL lentas según sea necesario.