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

acceso simultáneo a la base de datos MySQL usando un procedimiento almacenado

Primero, como se indicó en otra publicación, use InnoDB. Es el motor de almacenamiento predeterminado a partir de MySQL 5.5 y es más robusto.

En segundo lugar, consulte esta página:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

Debe usar SELECCIONAR ... PARA ACTUALIZAR para evitar que otras conexiones lean la fila que está a punto de actualizar hasta que se complete su transacción:

START TRANSACTION;

SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;

UPDATE mytable
SET value = value + 1
WHERE id = 5;

COMMIT;

Esto es mejor que bloquear la tabla porque InnoDB realiza bloqueos de nivel de fila. La transacción anterior solo bloquearía las filas donde id =5... por lo que esta consulta no retrasaría otra consulta que funcione con id =10.