sql >> Base de Datos >  >> RDS >> Mysql

MySQL:actualizaciones simultáneas (a través de subprocesos) en una tabla simple

El bloqueo es implícito, sí, pero no lo realiza executeUpdate() . El motor de almacenamiento en MySQL maneja el bloqueo y el desbloqueo.

Cada vez que escribe en una tabla MyISAM, su consulta espera que el bloqueo de escritura en la tabla esté disponible, se adquiere el bloqueo de escritura, se realiza la escritura y se libera el bloqueo de escritura. No existe una simultaneidad de escritura genuina en MyISAM porque, de hecho, cada trabajador está esperando en línea el bloqueo de escritura. No obtiene un error porque las solicitudes de escritura están serializadas.

La situación con InnoDB es similar pero muy diferente, ya que InnoDB solo bloquea una parte de la tabla, generalmente a nivel de fila, donde InnoDB puede bloquear un rango dentro de un índice, bloqueando así las filas en ese rango en el índice (y el hueco que les precede). Este bloqueo es más granular que el bloqueo de tablas, lo que permite un comportamiento de simultaneidad mejorado, pero no hay una operación simultánea en la misma fila:cada trabajador espera el bloqueo o los bloqueos que necesita.

En ambos casos, los bloqueos se toman implícitamente.