Eventos de espera de Aurora MySQL - Amazon Aurora

Eventos de espera de Aurora MySQL

He aquí algunos eventos de espera frecuentes de Aurora MySQL.

nota

Para obtener información sobre cómo ajustar el rendimiento de Aurora MySQL mediante eventos de espera, consulte Ajuste de Aurora MySQL con eventos de espera.

Para obtener información sobre las convenciones de nomenclatura de los eventos de espera de MySQL, consulte Performance Schema Instrument Naming Conventions en la documentación de MySQL.

cpu

El número de conexiones activas que están listas para ejecutarse es siempre mayor que el número de vCPU. Para obtener más información, consulte cpu.

io/aurora_redo_log_flush

Una sesión está conservando datos en el almacenamiento de Aurora. Este evento de espera suele ser para una operación de E/S de escritura en Aurora MySQL. Para obtener más información, consulte io/aurora_redo_log_flush.

io/aurora_respond_to_client

El procesamiento de consultas se ha completado y se devuelven los resultados al cliente de la aplicación para las siguientes versiones de Aurora MySQL: 2.10.2 y versiones posteriores a 2.10, 2.09.3 y versiones posteriores a 2.09 y 2.07.7 y versiones posteriores a 2.07. Compare el ancho de banda de red de la clase de instancia de base de datos con el tamaño del conjunto de resultados que se devuelve. Además, verifique los tiempos de respuesta del lado del cliente. Si el cliente no responde y no puede procesar los paquetes TCP, pueden producirse caídas de paquetes y retransmisiones TCP. Esta situación afecta negativamente al ancho de banda de la red. En las versiones anteriores a 2.10.2, 2.09.3 y 2.07.7, el evento de espera incluye erróneamente el tiempo de inactividad. Para obtener información sobre cómo ajustar la base de datos cuando esta espera es destacada, consulte io/aurora_respond_to_client.

io/file/csv/data

Los subprocesos escriben a las tablas con un formato de valores separados por comas (CSV). Compruebe el uso de tablas CSV. Una causa habitual de este evento es que se haya establecido log_output en una tabla.

io/file/sql/binlog

Un subproceso está esperando por un archivo de registro binario (binlog) que se está escribiendo en disco.

io/redo_log_flush

Una sesión está conservando datos en el almacenamiento de Aurora. Este evento de espera suele ser para una operación de E/S de escritura en Aurora MySQL. Para obtener más información, consulte io/redo_log_flush.

io/socket/sql/client_connection

El programa mysqld está ocupado creando subprocesos para gestionar las nuevas conexiones de clientes entrantes. Para obtener más información, consulte io/socket/sql/client_connection.

io/table/sql/handler

El motor está esperando el acceso a una tabla. Este evento se produce independientemente de si los datos se almacenan en caché en el grupo de búferes o si se accede en el disco. Para obtener más información, consulte io/table/sql/handler.

lock/table/sql/handler

Este evento de espera es un controlador de evento de espera de bloqueo de tabla. Para obtener más información sobre los eventos de átomo y molécula del esquema de rendimiento, consulte Performance Schema Atom and Molecule Events en la documentación de MySQL.

synch/cond/innodb/row_lock_wait

Varias instrucciones de lenguaje de manipulación de datos (DML) acceden a las mismas filas de base de datos al mismo tiempo. Para obtener más información, consulte synch/cond/innodb/row_lock_wait.

synch/cond/innodb/row_lock_wait_cond

Varias instrucciones DML acceden a las mismas filas de base de datos al mismo tiempo. Para obtener más información, consulte synch/cond/innodb/row_lock_wait_cond.

synch/cond/sql/MDL_context::COND_wait_status

Los subprocesos están esperando por un bloqueo de metadatos de tabla. El motor utiliza este tipo de bloqueo para administrar el acceso simultáneo a un esquema de base de datos y garantizar la coherencia de los datos. Para obtener más información, consulte Optimizing Locking Operations en la documentación de MySQL. Para obtener información sobre cómo ajustar la base de datos cuando este evento es destacado, consulte synch/cond/sql/MDL_context::COND_wait_status.

synch/cond/sql/MYSQL_BIN_LOG::COND_done

Ha activado el registro binario. Puede haber un alto rendimiento de confirmaciones, un gran número de transacciones que se comprometen o réplicas que leen binlogs. Considere utilizar instrucciones de varias filas o agrupar estados de cuenta en una transacción. En Aurora, utilice bases de datos globales en lugar de replicación de registros binarios o utilice los parámetros aurora_binlog_*.

synch/mutex/innodb/aurora_lock_thread_slot_futex

Varias instrucciones DML acceden a las mismas filas de base de datos al mismo tiempo. Para obtener más información, consulte synch/mutex/innodb/aurora_lock_thread_slot_futex.

synch/mutex/innodb/buf_pool_mutex

El grupo de búferes no es lo suficientemente grande como para almacenar el conjunto de datos de trabajo. O bien, la carga de trabajo accede a páginas de una tabla específica, lo que genera contención en el grupo de búferes. Para obtener más información, consulte synch/mutex/innodb/buf_pool_mutex.

synch/mutex/innodb/fil_system_mutex

El proceso está esperando el acceso a la memoria caché de memoria del espacio de tabla. Para obtener más información, consulte synch/mutex/innodb/fil_system_mutex.

synch/mutex/innodb/trx_sys_mutex

Las operaciones comprueban, actualizan, eliminan o agregan ID de transacción en InnoDB de forma coherente o controlada. Estas operaciones requieren un llamada mutex de trx_sys, a la que se le realiza un seguimiento mediante la instrumentación Performance Schema. Las operaciones incluyen la administración del sistema de transacciones cuando se inicia o cierra la base de datos, reversiones, limpiezas de deshacer, acceso de lectura de filas y cargas de grupos de búfer. La carga elevada de la base de datos con un gran número de transacciones da como resultado la aparición frecuente de este evento de espera. Para obtener más información, consulte synch/mutex/innodb/trx_sys_mutex.

synch/mutex/mysys/KEY_CACHE::cache_lock

El mutex de keycache->cache_lock controla el acceso a la caché de claves de las tablas MyISAM. Si bien Aurora MySQL no permite el uso de tablas MyISAM para almacenar datos persistentes, se utilizan para almacenar tablas temporales internas. Considere la posibilidad de comprobar los contadores con el estado created_tmp_tables o created_tmp_disk_tables, ya que, en determinadas situaciones, las tablas temporales se escriben en el disco cuando ya no caben en la memoria.

synch/mutex/sql/FILE_AS_TABLE::LOCK_offsets

El motor adquiere este mutex al abrir o crear un archivo de metadatos de tabla. Cuando este evento de espera se produce con una frecuencia excesiva, el número de tablas que se crean o abren ha aumentado.

synch/mutex/sql/FILE_AS_TABLE::LOCK_shim_lists

El motor adquiere este mutex mientras realiza operaciones tales como reset_size, detach_contents, o bien add_contents en la estructura interna que hace un seguimiento de las tablas abiertas. El mutex sincroniza el acceso al contenido de la lista. Cuando este evento de espera se produce con alta frecuencia, indica un cambio repentino en el conjunto de tablas a las que se había accedido anteriormente. El motor necesita acceder a tablas nuevas o dejar de lado el contexto relacionado con las tablas a las que se ha accedido anteriormente.

synch/mutex/sql/LOCK_open

El número de tablas que están abriendo las sesiones supera el tamaño de la caché de definiciones de tablas o de la caché abierta de tablas. Aumente el tamaño de estas cachés. Para obtener más información, consulte How MySQL Opens and Closes Tables.

synch/mutex/sql/LOCK_table_cache

El número de tablas que están abriendo las sesiones supera el tamaño de la caché de definiciones de tablas o de la caché abierta de tablas. Aumente el tamaño de estas cachés. Para obtener más información, consulte How MySQL Opens and Closes Tables.

synch/mutex/sql/LOG

En este evento de espera, hay subprocesos esperando por un bloqueo de log. Por ejemplo, un subproceso podría esperar a un bloqueo para escribir en el archivo log de consultas lentas.

synch/mutex/sql/MYSQL_BIN_LOG::LOCK_commit

En este evento de espera, hay un subproceso esperando a adquirir un bloqueo con la intención de efectuar una confirmación en el log binario. La contención de logs binarios se puede producir en las bases de datos cuya velocidad de cambio es muy alta. Según la versión de MySQL, hay algunos bloqueos que se utilizan para proteger la coherencia y durabilidad del log binario. En RDS for MySQL, los registros binarios se utilizan para la replicación y para el proceso de backup automatizado. En Aurora MySQL, los logs binarios no se necesitan para la replicación o las copias de seguridad nativas. Están deshabilitados de forma predeterminada, pero se pueden habilitar y utilizar para la replicación externa o la captura de datos de cambios. Para obtener más información, consulte The Binary Log en la documentación de MySQL.

sync/mutex/sql/MYSQL_BIN_LOG::LOCK_dump_thread_metrics_collection

Si el registro binario está activado, el motor adquiere este mutex cuando imprime métricas de subprocesos de volcado activos en el registro de errores del motor y en el mapa de operaciones interno.

sync/mutex/sql/MYSQL_BIN_LOG::LOCK_inactive_binlogs_map

Si el registro binario está activado, el motor adquiere este mutex cuando agrega, elimina o busca en la lista de archivos binlog detrás del último.

sync/mutex/sql/MYSQL_BIN_LOG::LOCK_io_cache

Si el registro binario está activado, el motor adquiere este mutex durante las operaciones de caché de E/S binlog de Aurora: asignar, cambiar el tamaño, liberar, escribir, leer, purgar y acceder a la información de la caché. Si este evento se produce con frecuencia, el motor accede a la caché donde se almacenan los eventos binlog. Para reducir los tiempos de espera, reduzca las confirmaciones. Intente agrupar varios estados de cuenta en una sola transacción.

synch/mutex/sql/MYSQL_BIN_LOG::LOCK_log

Ha activado el registro binario. Puede haber un alto rendimiento de confirmaciones, muchas transacciones que se comprometen o réplicas que leen binlogs. Considere utilizar instrucciones de varias filas o agrupar estados de cuenta en una transacción. En Aurora, utilice bases de datos globales en lugar de replicación de registros binarios o utilice los parámetros aurora_binlog_*.

synch/mutex/sql/SERVER_THREAD::LOCK_sync

El mutex SERVER_THREAD::LOCK_sync se adquiere durante la programación, el procesamiento o el lanzamiento de subprocesos para la escritura de archivos. La ocurrencia excesiva de este evento de espera indica una mayor actividad de escritura en la base de datos.

synch/mutex/sql/TABLESPACES:lock

El motor adquiere el mutex de TABLESPACES:lock durante las siguientes operaciones de espacio de tabla: crear, eliminar, truncar y extender. La ocurrencia excesiva de este evento de espera indica una alta frecuencia de operaciones de espacio de tabla. Un ejemplo es cargar una gran cantidad de datos en la base de datos.

synch/rwlock/innodb/dict

En este evento de espera, hay subprocesos esperando por un rwlock aplicado al diccionario de datos de InnoDB.

synch/rwlock/innodb/dict_operation_lock

En este evento de espera, hay subprocesos manteniendo bloqueos en operaciones del diccionario de datos de InnoDB.

synch/rwlock/innodb/dict sys RW lock

Al mismo tiempo se activan un gran número de declaraciones de lenguaje de control de datos (DCL) simultáneas en el código de lenguaje de definición de datos (DDL). Reduzca la dependencia de la aplicación de los DDL durante la actividad regular de la aplicación.

synch/rwlock/innodb/index_tree_rw_lock

Un gran número de instrucciones de lenguaje de manipulación de datos (DML) acceden al mismo objeto de base de datos al mismo tiempo. Intente usar instrucciones de varias filas. Además, distribuya la carga de trabajo sobre distintos objetos de base de datos. Por ejemplo, implementar particiones.

synch/sxlock/innodb/dict_operation_lock

Al mismo tiempo se activan un gran número de declaraciones de lenguaje de control de datos (DCL) simultáneas en el código de lenguaje de definición de datos (DDL). Reduzca la dependencia de la aplicación de los DDL durante la actividad regular de la aplicación.

synch/sxlock/innodb/dict_sys_lock

Al mismo tiempo se activan un gran número de declaraciones de lenguaje de control de datos (DCL) simultáneas en el código de lenguaje de definición de datos (DDL). Reduzca la dependencia de la aplicación de los DDL durante la actividad regular de la aplicación.

synch/sxlock/innodb/hash_table_locks

La sesión no ha encontrado páginas del grupo de búferes. El motor necesita leer un archivo o modificar la lista menos usada recientemente (LRU) para el grupo de búferes. Considere aumentar el tamaño de la caché del búfer y mejorar las rutas de acceso para las consultas pertinentes.

synch/sxlock/innodb/index_tree_rw_lock

Muchas instrucciones de lenguaje de manipulación de datos (DML) acceden al mismo objeto de base de datos al mismo tiempo. Intente usar instrucciones de varias filas. Además, distribuya la carga de trabajo sobre distintos objetos de base de datos. Por ejemplo, implementar particiones.

Para obtener más información la solución de problemas de los eventos de espera de sincronización, consulte ¿Por qué mi instancia de base de datos MySQL muestra un gran número de sesiones activas esperando en eventos de espera SYNCH en Performance Insights?.