¿Por qué un SELECT espera un bloqueo?

En mi aplicación tengo el problema de que a veces las instrucciones SELECT se encuentran con una java.sql.SQLException: Lock wait timeout exceeded; try restarting transactionexcepción. Lamentablemente, no puedo crear un ejemplo ya que las circunstancias son muy complejas. Entonces la pregunta es solo acerca de la comprensión general.

Un poco de información de fondo: estoy usando MySQL (InnoDB) con el nivel de aislamiento READ_COMMITED.

En realidad, no entiendo cómo un SELECT puede encontrarse con un tiempo de espera de bloqueo con esa configuración. Pensé que un SELECT nunca se bloquearía, ya que solo devolvería el último estado comprometido (administrado por MySQL). De todos modos, de acuerdo con lo que está sucediendo, esto parece estar mal. Entonces, ¿cómo es realmente?

Ya leí este https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html pero eso realmente no me dio una pista. No SELECT ... FOR UPDATEo algo así se usa.

Respuesta 1

Solo quiero descubrir dispositivos periféricos cuando inicio mi descubrimiento de dispositivos Bluetooth, mi aplicación no debe descubrir / mostrar otros dispositivos. ¿Es esto posible? así es como estoy buscando dispositivos ...

Tengo diferentes módulos en mi aplicación. Cada módulo se puede exportar en Excel, Word y PDF. El formato del informe es horizontal o vertical. Ahora necesito compilar todos esos informes y ...

amigos, no sé cómo obtener las canciones restantes y la duración total del reproductor multimedia. En mi código, quiero obtener la duración total de las canciones y la duración restante y mostrarlas en la vista de texto con el tiempo adecuado ...

No hay backend de estado de RocksDB: el estado de difusión se mantiene en memoria en tiempo de ejecución y el aprovisionamiento de memoria se debe realizar en consecuencia. Esto es válido para todos los estados del operador. arriba es del sitio web oficial de flink. ...