Solución de problemas de SQL lento para instancias de base de datos de RDS for MySQL
Esta sección describe cómo solucionar problemas de sentencias SQL lentas en instancia de base de datos de RDS for MySQL. Para cualquier escenario de servicio dado, la eficiencia de la consulta depende de la arquitectura y del diseño de la tabla de la base de datos y del índice. Arquitectura e índices mal diseñados causarán muchas sentencias SQL lentas.
Sentencias SQL lentas causadas por excepciones de SQL
- Causas y síntomas
Existen muchas causas para las excepciones de SQL, por ejemplo, el diseño inadecuado de la estructura de la tabla de la base de datos, la falta de índices o demasiadas filas que deben analizarse.
En la página de registros de consultas lentas de la consola de gestión, puede descargar registros de consultas lentas para identificar las sentencias SQL lentas y ver cuánto tiempo tardaron en ejecutarse. Para obtener más información, consulte Consulta y descarga de registros de consultas lentas.
- Solución
Sentencias SQL lentas causadas por límites de instancia de base de datos
- Causas y síntomas
El rendimiento de la instancia de base de datos se puede limitar porque:
- Sus cargas de trabajo han ido aumentando, pero el almacenamiento no se ha ampliado en consecuencia.
- El rendimiento de la instancia de base de datos se ha deteriorado a medida que el servidor físico de la instancia envejece.
- La cantidad de datos ha ido en aumento y la estructura de los datos ha ido cambiando.
Puede ver el uso de recursos de la instancia de base de datos en la consola. Si los valores de todas las métricas de uso de recursos están cerca del 100%, la instancia de base de datos puede alcanzar su rendimiento máximo. Para obtener más información, consulte Consulta de métricas de monitoreo.
- Solución
Actualice la clase de instancia. Para obtener más información, consulte Cambio de clase de una instancia de base de datos.
Sentencias SQL lentas causadas por actualizaciones de versión
- Causas y síntomas
La actualización de la instancia de base de datos puede cambiar el plan de ejecución de SQL. Los tipos de unión determinados en el plan de ejecución son, en orden descendente de eficiencia:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all
Para obtener más información, consulte documentación oficial de MySQL.
Si la aplicación reenvía con frecuencia solicitudes de consulta que especifican uniones de intervalos e índices, pero RDS procesa estas solicitudes de consulta lentamente, se paralelizan varias sentencias SQL. En este caso, su aplicación es lenta para liberar subprocesos. Como resultado, las conexiones en el grupo de conexiones se agotan, lo que afecta a todas las cargas de trabajo de su instancia de base de datos.
Puede iniciar sesión en la consola para ver cuántas conexiones actuales ha establecido su instancia de base de datos. Para obtener más información, consulte Consulta de métricas de monitoreo.
- Solución
Analizar el uso del índice y el número de filas que analizar, estimar la eficiencia de la consulta, reconstruir sentencias SQL y ajustar índices. Para obtener más información, consulte Ejecutar un plan de SQL.
Sentencias SQL lentas causadas por configuraciones inadecuadas de parámetros
- Causas y síntomas
La configuración inadecuada de algunos parámetros (como innodb_spin_wait_delay) puede afectar el rendimiento.
Puede ver las modificaciones de parámetros en la consola. Para obtener más información, consulte Consulta del historial de cambios de parámetros.
- Solución
Modifique los parámetros relacionados en función de su escenario de servicio específico. Para obtener más información, consulte Sugerencias en ajuste de parámetros de RDS for MySQL.
Sentencias SQL lentas causadas por operaciones por lotes
- Causas y síntomas
Se realiza un gran número de operaciones para importar, eliminar y consultar datos.
Puede ver Total Storage Space, Storage Space Usage y IOPS en la consola. Para obtener más información, consulte Consulta de métricas de monitoreo.
- Solución
Realice operaciones por lotes durante las horas fuera de pico, o sepárelas.
Sentencias SQL lentas causadas por tareas programadas
- Causas y síntomas
Si la carga de la instancia de base de datos cambia regularmente con el tiempo, es posible que haya tareas programadas que lo causen.
Puede ver DELETE Statements per Second, INSERT Statements per Second, INSERT_SELECT Statements per Second, REPLACE Statements per Second, REPLACE_SELECTION Statements per Second, SELECT Statements per Second y UPDATE Statements per Second en la consola para determinar si la carga ha cambiado regularmente. Para obtener más información, consulte Consulta de métricas de monitoreo.
- Solución
Ajuste la hora en que se ejecutan las tareas programadas. Se recomienda ejecutar tareas programadas durante las horas fuera de pico y cambiar la ventana de mantenimiento a horas fuera de pico. Para obtener más información, consulte Cambio de la ventana de mantenimiento.