synch/mutex/innodb/trx_sys_mutex - Amazon Aurora

synch/mutex/innodb/trx_sys_mutex

El evento synch/mutex/innodb/trx_sys_mutex se produce cuando hay una elevada actividad de la base de datos con un gran número de transacciones.

Versiones del motor relevantes

Esta información de evento de espera es compatible con las siguientes versiones del motor:

  • Aurora MySQL, versiones 2 y 3

Contexto

Internamente, el motor de base de datos InnoDB utiliza el nivel de aislamiento de lectura repetible con instantáneas para proporcionar coherencia de lectura. Esto proporciona una vista puntual de la base de datos en el momento en que se creó la instantánea.

En InnoDB, todos los cambios se aplican a la base de datos tan pronto como llegan, independientemente de si están confirmados. Este enfoque significa que sin el control de simultaneidad multiversión (MVCC), todos los usuarios conectados a la base de datos ven todos los cambios y las filas más recientes. Por lo tanto, InnoDB requiere una forma de realizar un seguimiento de los cambios para comprender qué se debe revertir cuando sea necesario.

Para ello, InnoDB utiliza un sistema de transacciones (trx_sys) para realizar un seguimiento de las instantáneas. El sistema de transacciones realiza lo siguiente:

  • Realiza un seguimiento del ID de transacción de cada fila en los registros de deshacer.

  • Utiliza una estructura interna de InnoDB denominada ReadView que ayuda a identificar qué ID de transacción están visibles para una instantánea.

Causas probables del aumento de las esperas

Cualquier operación de base de datos que requiera un manejo coherente y controlado (creación, lectura, actualización y eliminación) de los ID de transacciones genera una llamada desde trx_sys al mutex.

Estas llamadas se realizan en tres funciones:

  • trx_sys_mutex_enter: crea el mutex.

  • trx_sys_mutex_exit: libera el mutex.

  • trx_sys_mutex_own: comprueba si el mutex tiene propietario.

La instrumentación de InnoDB Performance Schema realiza un seguimiento de todas las llamadas de mutex trx_sys. El seguimiento incluye, entre otras acciones, la administración de trx_sys en el inicio o cierre de la base de datos, las operaciones de reversión, las limpiezas de deshacer, el acceso de lectura a filas y las cargas de grupos de búferes. La elevada actividad de la base de datos con un gran número de transacciones da como resultado la aparición frecuente de synch/mutex/innodb/trx_sys_mutex entre los eventos de espera principales.

Para obtener más información, consulte Monitoring InnoDB Mutex Waits Using Performance Schema en la documentación de MySQL.

Acciones

Recomendamos diferentes acciones en función de las causas del evento de espera.

Identificar las sesiones y consultas que provocan los eventos

Normalmente, las bases de datos con una carga de moderada a significativa tienen eventos de espera. Los eventos de espera pueden ser aceptables si el rendimiento es óptimo. Si el rendimiento no es óptimo, examine dónde pasa más tiempo la base de datos. Observe los eventos de espera que contribuyen a la carga más alta. Descubra si puede optimizar la base de datos y la aplicación para reducir esos eventos.

Para ver el gráfico SQL principal en la AWS Management Console
  1. Abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En el panel de navegación, seleccione Performance Insights.

  3. Elija una instancia de base de datos. Se muestra el panel de Información sobre rendimiento para esa instancia de base de datos.

  4. En el cuadro Database load (Carga de base de datos), elija Slice by wait (Corte por espera).

  5. Bajo el cuadro Database load (Carga de base de datos), elija Top SQL (SQL principal).

    El gráfico enumera las consultas SQL responsables de la carga. Las que están en la parte superior de la lista son las más importantes. Para resolver un cuello de botella, céntrese en estas instrucciones.

Para obtener información general útil sobre la solución de problemas mediante Información sobre rendimiento, consulte la entrada de blog Analyze Amazon Aurora MySQL Workloads with Performance Insights.

Examinar otros eventos de espera

Examine los demás eventos de espera asociados con el evento de espera synch/mutex/innodb/trx_sys_mutex. De este modo, podrá proporcionar más información acerca de la naturaleza de la carga de trabajo. Un gran número de transacciones podría reducir el rendimiento, pero la carga de trabajo también puede hacer que esto sea necesario.

Para obtener más información sobre cómo optimizar las transacciones, consulte Optimizing InnoDB Transaction Management en la documentación de MySQL.