Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Solución de problemas de rendimiento de consultas de las bases de datos Aurora MySQL - Amazon Aurora

Solución de problemas de rendimiento de consultas de las bases de datos Aurora MySQL

MySQL proporciona control del optimizador de consultas a través de variables del sistema que afectan a la forma en que se evalúan los planes de consultas, las optimizaciones intercambiables, las sugerencias de optimizadores e índices y el modelo de costos del optimizador. Estos puntos de datos pueden ser útiles no solo al comparar diferentes entornos MySQL, sino también para comparar los planes de ejecución de consultas anteriores con los planes de ejecución actuales y para comprender la ejecución general de una consulta MySQL en cualquier momento.

El rendimiento de las consultas depende de muchos factores, como el plan de ejecución, el esquema y tamaño de las tablas, las estadísticas, los recursos, los índices y la configuración de los parámetros. El ajuste de las consultas requiere identificar cuellos de botella y optimizar la ruta de ejecución.

  • Busque el plan de ejecución de la consulta y compruebe si la consulta utiliza los índices adecuados. Para optimizar la consulta, puede utilizar EXPLAIN y revisar los detalles de cada plan.

  • Aurora MySQL versión 3 (compatible con MySQL 8.0 Community Edition) utiliza una instrucción EXPLAIN ANALYZE. La instrucción EXPLAIN ANALYZE es una herramienta de elaboración de perfiles que indica en dónde MySQL dedica tiempo a su consulta y por qué. Con EXPLAIN ANALYZE, Aurora MySQL planifica, prepara y ejecuta la consulta mientras cuenta las filas y mide el tiempo empleado en varios puntos del plan de ejecución. Cuando se completa la consulta, EXPLAIN ANALYZE imprime el plan y sus medidas en lugar del resultado de la consulta.

  • Mantenga las estadísticas del esquema actualizadas mediante la instrucción ANALYZE. A veces, el optimizador de consultas puede elegir planes de ejecución inadecuados debido a que las estadísticas están desactualizadas. Esto puede provocar un rendimiento deficiente de una consulta debido a que las estimaciones de cardinalidad de las tablas y los índices no son exactas. La columna last_update de la tabla innodb_table_stats muestra la última vez que se actualizaron las estadísticas del esquema, lo que es un buen indicador de que están “estancadas”.

  • Pueden producirse otros problemas, como un sesgo en la distribución de los datos, que no se tienen en cuenta para determinar la cardinalidad de la tabla. Para obtener más información, consulte Estimating ANALYZE TABLE complexity for InnoDB tables y Histogram statistics in MySQL en la documentación de MySQL.

Descripción del tiempo que emplean las consultas

Estas son formas de determinar el tiempo que emplean las consultas:

Elaboración de perfiles

La elaboración de perfiles está deshabilitada de forma predeterminada. Habilite la elaboración de perfiles y, a continuación, ejecute la consulta lenta y revise su perfil.

SET profiling = 1; Run your query. SHOW PROFILE;
  1. Identifique la etapa en la que pasa más tiempo. De acuerdo con General thread states, en la documentación de MySQL, leer y procesar filas de una instrucción SELECT determinada suele ser el estado que tarda más tiempo en ejecutarse a lo largo de la vida útil de una consulta. Puede usar la instrucción EXPLAIN para saber cómo MySQL ejecuta esta consulta.

  2. Revise el registro de consultas lentas para evaluar rows_examined y rows_sent para asegurarse de que la carga de trabajo es similar en cada entorno. Para obtener más información, consulte Registro de bases de datos Aurora MySQL.

  3. Ejecute el siguiente comando para las tablas que forman parte de la consulta identificada:

    SHOW TABLE STATUS\G;
  4. Obtenga la siguiente salida antes y después de ejecutar la consulta en cada entorno:

    SHOW GLOBAL STATUS;
  5. Ejecute los siguientes comandos en cada entorno para comprobar si hay alguna otra consulta o sesión que influya en el rendimiento de esta consulta de ejemplo.

    SHOW FULL PROCESSLIST; SHOW ENGINE INNODB STATUS\G;

    A veces, cuando los recursos del servidor están ocupados, esto afecta a todas las demás operaciones del servidor, incluidas las consultas. También puede obtener información periódicamente cuando se ejecutan consultas o configurar un trabajo de cron para obtener información a intervalos útiles.

Performance Schema

Performance Schema proporciona información útil sobre el rendimiento del tiempo de ejecución del servidor y, al mismo tiempo, tiene un impacto mínimo en ese rendimiento. Es diferente de information_schema, que proporciona información de esquema sobre la instancia de base de datos. Para obtener más información, consulte Descripción general de Performance Schema para Información de rendimiento en Aurora MySQL.

Seguimiento del optimizador de consultas

Para entender por qué se eligió un plan de consultas en particular para su ejecución, puede configurar optimizer_trace para acceder al optimizador de consultas de MySQL.

Ejecute un seguimiento del optimizador para ver información exhaustiva sobre todas las rutas disponibles para el optimizador y su elección.

SET SESSION OPTIMIZER_TRACE="enabled=on"; SET optimizer_trace_offset=-5, optimizer_trace_limit=5; -- Run your query. SELECT * FROM table WHERE x = 1 AND y = 'A'; -- After the query completes: SELECT * FROM information_schema.OPTIMIZER_TRACE; SET SESSION OPTIMIZER_TRACE="enabled=off";

Revisión de la configuración del optimizador de consultas

Aurora MySQL versión 3 (compatible con MySQL 8.0 Community Edition) tiene muchos cambios relacionados con el optimizador en comparación con Aurora MySQL versión 2 (compatible con MySQL 5.7 Community Edition). Si tiene algunos valores personalizados para optimizer_switch, le recomendamos que revise las diferencias entre los valores predeterminados y establezca los valores de optimizer_switch que mejor se adapten a su carga de trabajo. También le recomendamos que pruebe las opciones disponibles para la versión 3 de Aurora MySQL para examinar el rendimiento de las consultas.

nota

La versión 3 de Aurora MySQL utiliza el valor predeterminado de 20 de la comunidad para el parámetro innodb_stats_persistent_sample_pages.

Puede utilizar el siguiente comando para mostrar los valores de optimizer_switch:

SELECT @@optimizer_switch\G;

En la tabla siguiente, se muestran los valores predeterminados de optimizer_switch en Aurora MySQL versiones 2 y 3.

Opción Aurora MySQL versión 2 Aurora MySQL versión 3
batched_key_access off off
block_nested_loop on on
condition_fanout_filter on on
derived_condition_pushdown on
derived_merge on on
duplicateweedout on on
engine_condition_pushdown on on
firstmatch on on
hash_join off on
hash_join_cost_based on
hypergraph_optimizer off
index_condition_pushdown on on
index_merge on on
index_merge_intersection on on
index_merge_sort_union on on
index_merge_union on on
loosescan on on
materialization on on
mrr on on
mrr_cost_based on on
prefer_ordering_index on on
semijoin on on
skip_scan on
subquery_materialization_cost_based on on
subquery_to_derived off
use_index_extensions on on
use_invisible_indexes off

Para obtener más información, consulte Switchable optimizations (MySQL 5.7) y Switchable optimizations (MySQL 8.0) en la documentación de MySQL.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.