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

ACTUALIZAR con SELECCIONAR, bloqueará cada fila o todos los registros SELECCIONADOS

La UPDATE se está ejecutando en transacción - es un atomic operación, lo que significa que si una de las filas falla (debido a una restricción única, por ejemplo), no actualizará ninguna de las 5000 filas. Esta es una de las propiedades ACID de una base de datos transaccional.

Debido a esto, el UPDATE mantenga un bloqueo en todas las filas para toda la transacción. De lo contrario, otra transacción puede actualizar aún más el valor de una fila, en función de su valor actual (digamos, actualizar registros establecer valor =valor * '2'). Esta declaración debería producir un resultado diferente dependiendo de si la primera transacción se confirma o retrocede. Debido a esto, debe esperar a que la primera transacción complete las 5000 actualizaciones.

Si desea liberar los bloqueos, simplemente realice la actualización en lotes (más pequeños).

PD autocommit controla si cada declaración se emite en una transacción propia, pero no afecta la ejecución de una sola consulta