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/ ¿Qué debo hacer si los bloqueos en transacciones largas bloquean la ejecución de transacciones posteriores?
Actualización más reciente 2023-12-14 GMT+08:00

¿Qué debo hacer si los bloqueos en transacciones largas bloquean la ejecución de transacciones posteriores?

Escenario

Se informó del código de error 1205:

"MySQL error code MY-001205 (ER_LOCK_WAIT_TIMEOUT): Lock wait timeout exceeded; try restarting transaction"

Causas posibles

  1. Compruebe el valor del Row Lock Time de la métrica de monitorización. En este ejemplo, el valor de esta métrica era alto, por lo que sabemos que hubo conflictos de bloqueo en el sistema.

    Para obtener más información sobre las métricas de monitoreo, consulte Consulta de métricas de monitoreo de instancias.

  2. Inicie sesión en la instancia de base de datos y ejecute la siguiente sentencia SQL para comprobar las transacciones largas en el sistema y los bloqueos de fila que mantienen las transacciones:
    select trx_mysql_thread_id, trx_id, trx_state, trx_started, trx_tables_locked, trx_rows_locked, trx_isolation_level, trx_query, trx_operation_state from information_schema.innodb_trx order by trx_started;

    • information_schema.innodb_trx: información sobre las transacciones que se están ejecutando en InnoDB.
    • trx_started: hora de inicio de una transacción, que se utiliza para determinar si la transacción actual es una transacción larga. El tiempo de ejecución de una transacción es el tiempo actual menos el tiempo de inicio.
    • trx_state: Estado de la transacción actual. Los valores son los siguientes:
      • RUNNING
      • LOCK WAIT

        Si el estado de una transacción es de LOCK WAIT, la transacción mantiene un bloqueo de fila.

      • ROLLING BACK
      • COMMITTING

Solución

Elimine las transacciones largas.